假设我有以下正则表达式:
/hellosworld!/g
如果我将此正则表达式传递给RegExp
构造函数,没有引号:
new RegExp(/hellosworld!/g)
它会返回包含/hellosworld!/g
的正则表达式,例如:
//hellosworld!/g/
或它会返回原始的正则表达式?
根据MDN,以下表达式创建相同的正则表达式:
new RegExp("ab+c", "i");
new RegExp(/ab+c/, "i");
预期结果:
/ab+c/i
,如果您通过带有标志的正则义务,但在第二个参数中没有定义新标志,结果也将是相同的,例如:
new RegExp(/ab+c/i)
应返回相同的正则义务文字(/ab+c/i
(,但是如果您确实指定了新的Regex标志(在第二个参数中(将删除所有现有标志。
new RegExp(/ab+c/i, "")
new RegExp(/ab+c/i, "g")
new RegExp(/ab+c/i, "m")
预期结果:
/ab+c/
/ab+c/g
/ab+c/m
字面符号是什么?
评估表达式时,字面符号提供了正则表达式的汇编。
我什么时候应该使用文字符号?
当正则表达式保持恒定时,请使用文字符号。例如,如果您使用文字符号来构建循环中使用的正则表达式,则不会在每次迭代中重新编译正则表达式。
构造函数函数有什么作用?
正则表达式对象的构造函数(例如,新
RegExp('ab+c')
(提供了正则表达式的运行时汇编。
我什么时候应该使用构造函数?
当您知道正则表达模式将在更改时,请使用构造函数函数,或者您不知道该模式并从其他来源(例如用户输入(获取它。
祝你好运。