Поиск плюса в регулярном выражении - PullRequest
29 голосов
/ 07 января 2010
var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));

Вчера вечером я обнаружил, что если вы попытаетесь найти знак плюс в строке текста с регулярным выражением Javascript, то произойдет сбой. Он не найдет этот шаблон, даже если он существует в этой строке. Это должно быть из-за особого характера. Какой лучший способ найти знак плюс в куске текста? Кроме того, на каких других персонажах это не получится?

Ответы [ 6 ]

55 голосов
/ 07 января 2010

Plus - это специальный символ в регулярных выражениях, поэтому, чтобы выразить символ как данные, вы должны экранировать его, добавив префикс \.

var reg = /d\+1/;
21 голосов
/ 07 января 2010
\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]

Но если вы не уверены, это не вредно, если вы включаете escape перед символом, не состоящим из слов, который вы пытаетесь найти.

Цифра или буква - это символ слова, экранирование цифры относится к предыдущему совпадению, экранирование буквы может соответствовать непечатаемому символу, например, новая строка (\ n), символ табуляции (\ t) или граница слова (\ b) или набор символов, например, любой символ слова (\ w), любой несловесный символ (\ W).

Не избегайте букв или цифр, если вы не имеете это в виду.

14 голосов
/ 08 января 2010

Просто заметка,

\ должно быть \\ в строке шаблона RegExp, RegExp("d\+1") не будет работать и Regexp(/d\+1/) получит ошибку.

var string = 'abcd+1';
var pattern = 'd\\+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));
//3
2 голосов
/ 07 января 2010

Вам, вероятно, нужно выбрать знак плюс:

var pattern = /d\+1/

Знак плюс используется в регулярных выражениях для обозначения 1 или более символов в строке.

2 голосов
/ 07 января 2010

Вы должны использовать escape-символ \ перед + в вашем шаблоне. например. \ +

1 голос
/ 20 ноября 2015

должно быть var pattern = '/d\\+1/'.

Строка будет иметь значение '\\' как '\' ('\\+' -> '\+'), поэтому объект регулярного выражения инициируется с /d\+1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...