新的RegExp('^ \ + \ d {2} \。\ d {10} $')不起作用

时间:2011-10-05 10:49:23

标签: javascript regex

我想测试字符串的格式。此字符串应以+符号开头,然后是2位数字,然后是.符号,然后是10位数。

/^\+\d{2}\.\d{10}$/.test('+34.2398320186');

这样,它可以工作(你可以测试它)。但是当我使用RegExp时,它会说语法有无效的量词错误。怎么了?

3 个答案:

答案 0 :(得分:9)

您必须使用第二个\

逃离\\
new RegExp('^\\+\\d{2}\\.\\d{10}$'); // should work

我将添加http://www.regular-expressions.info/javascript.html

的推荐
  

我建议您不要将RegExp构造函数与文字一起使用   string,因为在文字字符串中,必须转义反斜杠。

答案 1 :(得分:4)

由于您将正则表达式指定为字符串,因此您还需要转义'\',因为它也是字符串转义字符。所以你想要:

new RegExp('^\\+\\d{2}\\.\\d{10}$');

答案 2 :(得分:4)

如果您不想转义反斜杠,可以试试这个

var regex = /^\+\d{2}\.\d{10}$/ 
new RegExp(regex).test('+34.2398320186');

如果你想使用字符串作为RegExp的参数,那么你必须转义反斜杠。