我一直盯着同一regex的这两种风格,不明白为什么结果不同:
var projectName="SAMPLE_PROJECT",
fileName="1234_SAMPLE_PROJECT",
re1 = new RegExp('^(d+)_SAMPLE_PROJECT$','gi'),
re2 = /^(d+)_SAMPLE_PROJECT$/gi,
matches1 = re1.exec(fileName),
matches2 = re2.exec(fileName);
console.log(matches1);//returns null
console.log(matches2);//returns correctly
这是jsbin:https://jsbin.com/badoqokumu/edit?html,js,输出
你知道我实例化RegExp肯定做错了什么吗?
谢谢。
在第一种情况下,您有一个字符串文字,它使用引入转义序列。字符串中的
d
就是d
。如果需要d
,则需要键入\d
。
在第二种情况下,您有一个正则表达式文字,它不会将解释为字符串转义序列。