以下内容之间有什么区别:
var myConstructedRegExp = new RegExp("the", "g");
var myLiteralRegExp = /the/g;
它们两种方法是否相同,但只有差异是对象和原始引用?
答案 0 :(得分:1)
两者都是对象。没有正则表达式原语。
一些不同之处在于字符串版本可以更灵活地制作正则表达式,例如:加入其他字符串。请记住,您需要双重转义您计划转义的任何正则表达式元字符。
答案 1 :(得分:0)
有时您会想要以编程方式创建正则表达式。在这种情况下,您需要使用new RegExp
。
这里有一个例子
var str = "foo";
var re = new RegExp(str, "g");
//=> /foo/g
在这种情况下,使用RegExp文字不起作用
// does not work!
var str = "foo";
var re = /str/g;
//=> /str/g
我几乎所有事情都使用RegExp文字语法(/foo/
),但很高兴知道你可以在需要时回到构造函数(new RegExp("foo")
)。
无论哪种方式,两个正则表达式创建方法都会产生具有相同功能的对象。
答案 2 :(得分:0)
虽然在功能上相同,但存在一些细微差别