相同的动态正则表达式和内联正则表达式在javascript中不提供相同的输出

same dynamic regex and inline regex not giving same output in javascript

本文关键字:正则表达式 输出 动态 javascript      更新时间:2023-09-26

我一直盯着同一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

在第二种情况下,您有一个正则表达式文字,它不会将'解释为字符串转义序列。