med*_*iev 7

两者都评估为完全相同的正则表达式,但第一个是文字,意味着你不能在其中使用任何变量,你不能动态生成正则表达式.

第二个显式使用构造函数,可用于创建动态正则表达式.

var x = '3', r = ( new RegExp( x + '\d' ) ); r.test('3d')
Run Code Online (Sandbox Code Playgroud)

以上是使用构造函数动态构造正则表达式的示例,您无法以文字形式执行此操作.

在99%的情况下,您只需要依赖JS中所有正则表达式的第一个版本(文字).在您需要说的高级场景中,用户输入动态构建正则表达式,那时就需要第二种形式.

编辑#1:第一个匹配一个数字,第二个匹配字母d.你必须双重逃避第二个,以使它等于第一个,我认为你应该这样做.请记住,如果第二个例子是,我上面输入的建议是准确的new RegExp('\\d').

/\d/.test('3') // true
( new RegExp('\d') ).test('3') // false
( new RegExp('\\d') ).test('3') // true
Run Code Online (Sandbox Code Playgroud)