Да, взгляните на следующее сообщение на форуме:
http://forums.asp.net/t/1443955.aspx
Шаблон RegEx, который вы ищете, будет примерно похож на следующий:
"(?<!<[^>]*)Jon Doe(?<![^>]*<)"
По сути, вы выполняете поиск и заменяете все, что находится вне скобок <>.
JavaScript:
phrase = phrase.replace(/"(?<!<[^>]*)Jon Doe(?<![^>]*<)" /i, "is not");
Анализируете HTML с помощью регулярного выражения? Это плохая идея . Я бы посоветовал вставить HTML в DOM, а затем пройти по узлам.