带有数组的javascript正则表达式模式

带有数组的javascript正则表达式模式,javascript,regex,Javascript,Regex,我想创建一个正则表达式模式,它应该能够搜索整个数组 比如说: var arr = [ "first", "second", "third" ]; var match = text.match(/<arr>/); var arr=[“第一”、“第二”、“第三”]; var match=text.match(//); 哪一个应该只能匹配 <first> or <second> or <third> ...... 或。。。。。。 但我们应该忽略

我想创建一个正则表达式模式,它应该能够搜索整个数组

比如说:

var arr = [ "first", "second", "third" ];

var match = text.match(/<arr>/);
var arr=[“第一”、“第二”、“第三”];
var match=text.match(//);
哪一个应该只能匹配

<first> or <second> or <third> ......
或。。。。。。
但我们应该忽略

我需要一个有效的方法

任何帮助都会很好。 谢谢

  • 首先,您可以引用所有特殊的正则表达式字符
  • 然后可以使用
    |
    连接数组元素,并创建
    RegExp
    的实例
  • 代码:
    您应该使用
    (a | b | c)
    从列表中搜索特定单词

    该列表由
    arr
    组成,通过将值与
    |
    字符连接为胶水

    var arr = [ "first", "second", "third" ];
    
    var match = text.match(new RegExp("<(?:"+arr.join("|")+")>")); //matches <first> <second> and <third>
    
    var arr=[“第一”、“第二”、“第三”];
    var match=text.match(新的RegExp(“”)//火柴和
    
    请注意,如果您的“源”字可能包含正则表达式的保留字符,您可能会遇到麻烦,因此您可能需要在加入数组之前转义这些字符

    可以找到这样做的良好功能:

    函数regexpQuote(str,分隔符){
    返回字符串(str)
    .replace(新的RegExp('.\\\\+*?\\[\\\^\\]$(){}=!\;:\\'+(分隔符\\\'''+'-]','g'),'\$&');
    }
    
    因此,在这种情况下,您将

    function escapeArray(arr){
        var escaped = [];
        for(var i in arr){
           escaped.push(regexpQuote(arr[i]));
        }
        return escaped;
    }
    
    var arr = [ "first", "second", "third" ];
    var pattern = new RegExp("<(?:"+escapeArray(arr).join("|")+")>");
    var match = text.match(pattern); //matches <first> <second> and <third>
    
    函数转义数组(arr){
    var=[];
    用于(arr中的var i){
    逃逸推送(regexpQuote(arr[i]);
    }
    返回逃逸;
    }
    var arr=[“第一”、“第二”、“第三”];
    var模式=新的RegExp(“”);
    var match=text.match(模式)//火柴和
    
    我想匹配尖括号内的标记并突出显示它们,但括号内的文本应该在数组中。在以这种方式编译之前,不要忘记确保
    arr
    不包含
    |
    和类似的功能字符。谢谢!现在它看起来很完美。不客气,一个很好的问题+1。很抱歉,在此期间我接到一个电话,无法及时提交所需的编辑。
    var arr = [ "first", "second", "third" ];
    
    var match = text.match(new RegExp("<(?:"+arr.join("|")+")>")); //matches <first> <second> and <third>
    
    function regexpQuote(str, delimiter) {
      return String(str)
        .replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
    }
    
    function escapeArray(arr){
        var escaped = [];
        for(var i in arr){
           escaped.push(regexpQuote(arr[i]));
        }
        return escaped;
    }
    
    var arr = [ "first", "second", "third" ];
    var pattern = new RegExp("<(?:"+escapeArray(arr).join("|")+")>");
    var match = text.match(pattern); //matches <first> <second> and <third>