javascript \ d регулярное выражение неожиданное поведение - PullRequest
0 голосов
/ 02 июля 2010

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

Строка, которую я пытался найти, была: «0 (IR)», а блок кода был

finalRegEx = new RegExp("[0-9]");
match = finalRegEx.exec(str);

за исключением того, что когда я поставил "\ d" вместо "[0-9]", он не нашел соответствия. Я действительно смущен этим.

Ответы [ 3 ]

4 голосов
/ 02 июля 2010

Если вы используете RegExp с "\d" для построения регулярного выражения, "\d" приведет к "d".Либо используйте две косые черты, чтобы избежать косой черты, например "\\d", либо просто используйте литералы регулярного выражения /…/ вместо:

match = /\d/.exec(str)
3 голосов
/ 02 июля 2010

Вы должны выйти из него, потому что вы используете конструктор, в противном случае он соответствует d буквально:

new RegExp('\\d').test('1')

new RegExp следует использовать только для динамического сопоставления. В противном случае используйте литерал:

var foo = /\d/;
foo.test(1)
0 голосов
/ 02 июля 2010

Вы, вероятно, должны избежать обратной косой черты: finalRegEx = new RegExp("\\d");

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