Javascript Regexp从变量动态生成?

如何将两个正则表达式模式构造为一个?

例如,我有一个长模式,一个小模式,我需要在长模式前面放一个小模式。

var pattern1 = ':\(|:=\(|:-\(';

var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('

str.match('/'+pattern1+'|'+pattern2+'/gi');

这行不通。当我连接字符串时,所有的斜杠都消失了。

回答:

您必须使用RegExp

str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));


当我连接字符串时,所有的斜杠都消失了。

如果您的模式中有反斜杠以转义特殊的正则表达式字符(如\(),则必须在字符串中使用两个反斜杠(因为\是字符串中的转义字符):newRegExp('\\(')与相同/\(/

因此,您的模式必须变为:

var pattern1 = ':\\(|:=\\(|:-\\(';

var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';

以上是 Javascript Regexp从变量动态生成? 的全部内容, 来源链接: utcz.com/qa/428698.html

回到顶部