如何将两个正则表达式模式构造为一个?例如,我有一个长模式,一个小模式,我需要在长模式前面放一个小模式。var pattern1 = ':\(|:=\(|:-\(';var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('str.match('/'+pattern1+'|'+pattern2+'/gi');这行不通。当我连接字符串时,所有的斜杠都消失了。
3 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您必须使用RegExp:
str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));
当我连接字符串时,所有的斜杠都消失了。
如果您的模式中有一个反斜杠以转义特殊的正则表达式字符(如\(),则必须在字符串中使用两个反斜杠(因为\是字符串中的转义字符):new RegExp('\\(')与相同/\(/。
因此,您的模式必须变为:
var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
茅侃侃
TA贡献1842条经验 获得超21个赞
使用以下内容:
var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regEx);
吃鸡游戏
TA贡献1829条经验 获得超7个赞
您必须放弃正则表达式文字并使用对象构造函数,您可以在其中将正则表达式作为字符串传递。
var regex = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regex);
添加回答
举报
0/150
提交
取消