JavaScript RegExp差异

时间:2010-12-20 20:43:06

标签: javascript regex

之间有什么区别
var regEx = /\d/;

var regEx = new RegEx("\d");

鲍勃

1 个答案:

答案 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