为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript Regexp从变量动态生成?

Javascript Regexp从变量动态生成?

如何将两个正则表达式模式构造为一个?例如,我有一个长模式,一个小模式,我需要在长模式前面放一个小模式。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 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';


查看完整回答
反对 回复 2019-10-29
?
茅侃侃

TA贡献1842条经验 获得超21个赞

使用以下内容:


var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');


str.match(regEx);


查看完整回答
反对 回复 2019-10-29
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您必须放弃正则表达式文字并使用对象构造函数,您可以在其中将正则表达式作为字符串传递。


var regex = new RegExp(pattern1+'|'+pattern2, 'gi');

str.match(regex);


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 1817 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信