之间有什么区别
var regEx = /\d/;
和
var regEx = new RegEx("\d");
鲍勃
答案 0 :(得分:7)
两者都评价为完全相同的正则表达式,但第一个是文字,意味着你不能在其中使用任何变量,你不能动态生成正则表达式。
第二个显式使用构造函数,可用于创建动态正则表达式。
var x = '3', r = ( new RegExp( x + '\d' ) ); r.test('3d')
以上是使用构造函数动态构造正则表达式的示例,您无法以文字形式执行此操作。
在99%的情况下,您只需依赖JS的所有正则表达式的第一个版本(文字)。在您需要说的高级场景中,用户输入以动态构建正则表达式,然后在您需要第二个表单时。
编辑#1 :第一个匹配一个数字,第二个匹配字母d
。你必须双重逃避第二个,以使它等于第一个,我认为你应该这样做。请记住,如果第二个示例是new RegExp('\\d')
,我上面输入的建议是准确的。
/\d/.test('3') // true
( new RegExp('\d') ).test('3') // false
( new RegExp('\\d') ).test('3') // true