Javascript正则expression式dynamic生成variables?
如何构build两个正则expression式模式?
例如,我有一个较长的模式,一个较小的模式,我需要把较小的模式放在较长的模式之前。
var pattern1 = ':\(|:=\(|:-\('; var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\(' str.match('/'+pattern1+'|'+pattern2+'/gi'); 这不起作用。 当我连接string时,所有的斜线都消失了。
 您必须使用RegExp : 
 str.match(new RegExp(pattern1+'|'+pattern2, 'gi')); 
当我连接string时,所有的斜线都消失了。
 如果你的模式中有一个反斜杠来转义一个特殊的正则expression式(比如\( ),你必须在string中使用两个反斜杠(因为\是string中的转义字符): new RegExp('\\(')将和/\(/ 。 
所以你的模式必须成为:
 var pattern1 = ':\\(|:=\\(|:-\\('; var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\('; 
使用以下内容:
 var regEx = new RegExp(pattern1+'|'+pattern2, 'gi'); str.match(regEx); 
您必须放弃正则expression式文字,并使用对象构造函数,您可以将正则expression式作为string传递。
 var regex = new RegExp(pattern1+'|'+pattern2, 'gi'); str.match(regex); 
RegExp构造函数创build一个正则expression式对象,用于将文本与模式进行匹配。
  var pattern1 = ':\\(|:=\\(|:-\\('; var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\('; var regex = new RegExp(pattern1 + '|' + pattern2, 'gi'); str.match(regex); 
上面的代码完全适合我…