我是Regex的新手,我想做的是以下几点。

假设我有一个关键字数组:

// the kwd is changed dynamically
var kwd = ["key1", "key2", "key3", "key4"];


我需要构建一个Regex来测试字符串是否包含该数组中的任何关键字。我想知道如何动态生成该Regex表达式?

大概一个功能:

function RegexBuilder(kwd){
    // I know I can use brutal force to search one by one,
    // but I just need to know how to generate that regex?
    return regex_expression;
}

最佳答案

这应该做。 constructor for the RegExp object可用于根据字符串而不是文字来构建RegExp。

function RegexBuilder(kwd){
    kwd.forEach(function(e,i,a){
        a[i] = e.replace(/[()^|$[\]*.\\?{}]/g, "\\$&");
    });
    regex_expression = new RegExp(kwd.join('|'));
    return regex_expression;
}


https://regex101.com/r/vE0cI0/1

09-28 06:46