экранирование кавычек в стиле MSWord в RegExp - PullRequest
1 голос
/ 21 июня 2010

Мне нужно преобразовать строки, вставленные в текстовую область, чтобы, если они были вставлены из MS Word, странные кавычки и апострофы, которые любит использовать Word, преобразовывались в обычные одинарные и двойные кавычки.К сожалению, мой текстовый редактор, кажется, уже преобразует такие кавычки, когда я сохраняю их, поэтому любое регулярное выражение, которое я создаю, кажется испорченным.Так что что-то вроде этого

string = string.replace(new RegExp("“", "g"), '"').replace(new RegExp("”", "g"), '"').replace(new RegExp("’", "g"), "'");

, похоже, не работает.(и я даже не знаю, будет ли здесь правильно публиковаться)

Как мне построить регулярное выражение, чтобы найти эти кавычки, используя все "обычные" символы?Предположительно побег последовательность?Я предпочитаю избегать «буквальной» нотации RegExp, даже если создание объектов происходит медленнее.

1 Ответ

0 голосов
/ 21 июня 2010

Попробуйте получить код ASCII символов, которые вы хотите удалить, и используйте его вместо самого символа:

string = string.replace(new RegExp("\xe2\x80\x9c", "g"), '"').replace(new RegExp("\xe2\x80\x9d", "g"), '"').replace(new RegExp("\xe2\x80\x99", "g"), "'");

(я использовал Notepad ++ с плагином HexEdit для получения кода)

Edit:
См. http://www.regular -expressions.info / unicode.html для получения дополнительной информации.
Ваш код должен быть (надеюсь, я не перепутал коды ...):

string = string.replace(new RegExp("\u201c", "g"), '"').replace(new RegExp("\u201d", "g"), '"').replace(new RegExp("\u2019", "g"), "'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...