如何将两个正则表达式合并成一个?
例如,我有一个长的正则表达式和一个较短的正则表达式,我需要把较短的正则表达式放在较长的正则表达式前面。
var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');
这不起作用。当我连接字符串时,所有的斜杠都消失了。
如何将两个正则表达式合并成一个?
例如,我有一个长的正则表达式和一个较短的正则表达式,我需要把较短的正则表达式放在较长的正则表达式前面。
var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');
这不起作用。当我连接字符串时,所有的斜杠都消失了。
你需要使用RegExp
:
str.match(new RegExp(pattern1+'|'+pattern2, 'gi'));
当我在拼接字符串时,所有的反斜杠都会消失。\(
),那么你必须在字符串中使用两个反斜杠(因为\
是字符串中的转义字符):new RegExp('\\(')
将与/\(/
相同。var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
使用以下代码:
var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regEx);
var regex = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regex);
var pattern1 = ':\\(|:=\\(|:-\\(';
var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
var regex = new RegExp(pattern1 + '|' + pattern2, 'gi');
str.match(regex);
上述代码对我来说完全可行...
new RegExp(...)
时,'/'
应该被移除吗? - Bart Kiers