2016-05-30 3 views
3

Я пытаюсь создать регулярное выражение с синтаксисом конструктора, подобным этому new RegExp('\bword\b', 'g'), но он не ведет себя так, как ожидалось. Скорее это создает регулярное выражение, которое выглядит так: /\bwor\b/g с отсутствующей последней буквой.Почему эти 2 регулярных выражения не ведут себя одинаково?

Я должен использовать синтаксис конструктора для создания регулярного выражения, поскольку я динамически создаю из json-файла, и вы не можете поместить regex в json. Так что мой вопрос:

a. Почему они ведут себя по-другому? и b. Что я могу сделать, чтобы исправить ситуацию?

Примечание. То, что я пытаюсь сделать, это создать регулярное выражение, которое соответствует только целому слову, а не слова, которое существует в другом слове.

+1

вам нужна обратная косая черта на RegExp – YOU

ответ

14

Для строки \b средства backspace.

Для регулярного выражения \b средства слово-граница.

Чтобы убедиться, что используется версия регулярного выражения, добавьте дополнительную обратную косую черту \ перед каждой обратной косой чертой в строке, чтобы избежать escape-символов.

+0

Спасибо! Я не понимал, что у них разные синтаксисы. – watzon

+2

@mascaliente не рассматривают их как «разные синтаксисы». Это просто требование для строковых литералов, чтобы слэш должен быть экранирован. – zerkms

+0

@zerkms thanks :) Мне нужно многому научиться в области регулярных выражений – watzon

Смежные вопросы