我想测试字符串的格式。此字符串应以+
符号开头,然后是2位数字,然后是.
符号,然后是10位数。
/^\+\d{2}\.\d{10}$/.test('+34.2398320186');
这样,它可以工作(你可以测试它)。但是当我使用RegExp
时,它会说语法有无效的量词错误。怎么了?
答案 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的参数,那么你必须转义反斜杠。