有人请解释一下为什么这会返回错误吗?
var regex = new RegExp('\([0-9]{3}\)[0-9]{3}-[0-9]{4}');
return regex.test('(555)555-5555');
我是否需要插入其他一些RegExp属性?
最好不要使用字符串,并且使用字符串或正则表达式文字有什么不同吗?
答案 0 :(得分:1)
它返回false,因为在将其定义为字符串时需要转义反斜杠,如下所示:
var rePhoneNumber = new RegExp('\\([0-9]{3}\\)[0-9]{3}-[0-9]{4}');
但是,因为它是javascript,你可以做一个字面定义:
var rePhoneNumber = /\([0-9]{3}\)[0-9]{3}-[0-9]{4}/;
return rePhoneNumber.test('(555)555-5555');
现在它返回true,因为你不需要转义反斜杠
<小时/> 请在此处查看工作代码段:
var rePhoneNumber = /\([0-9]{3}\)[0-9]{3}-[0-9]{4}/;
console.log(rePhoneNumber.test('(555)555-5555'));
var rePhoneNumber2 = new RegExp('\\([0-9]{3}\\)[0-9]{3}-[0-9]{4}');
console.log(rePhoneNumber2.test('(555)555-5555'));