2014-01-20 3 views
0

Test строка является "страница-42440233_45778105" узор "(PAGE- \ d + _ \ d +)"Javascript регулярное выражение не работает

Интернет тестер (http://www.regexr.com/) успешно finded mathc, но в результате браузера расслоение плотной равно нулю , Зачем?

var re = new RegExp("(page-\d+_\d+)", "gim"); 
var r_array = message.match(re); 
console.log(r_array); 

ответ

0

Вам нужно бежать \ если вы используете строковый литерал:

var message = "page-42440233_45778105"; 
var re = new RegExp("(page-\\d+_\\d+)", "gim"); 
var r_array = message.match(re); 
console.log(r_array); 
// => ["page-42440233_45778105"] 

Более предпочтительно использовать регулярное выражение буквальным:

var re = /(page-\d+_\d+)/gim; 
0

При использовании строковый литерал, вы должны спасаясь от \:

var re = new RegExp("(page-\\d+_\\d+)", "gim"); 

Лучшим решением здесь было бы использовать регулярное выражение буквального:

var re = /(page-\d+_\d+)/gim 

Не используйте конструктор RegExp, если регулярное выражение является постоянным, литералы регулярных выражений намного удобнее.

1

Я думаю, что это будет лучше образец

var re = /^page-\d+_\d+$/i; 

Он также соответствует началу (^) и конец ($) строки


message.match(re); 
//=> ["page-42440233_45778105"] 
+0

Зависит от цели. –

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