javascript - 如何从数组构建正则表达式或选项

标签 javascript regex

我对正则表达式还很陌生,我想做的是以下事情。

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

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

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

可能是一个函数:

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可用于从字符串而不是文字构建正则表达式。

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

关于javascript - 如何从数组构建正则表达式或选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186406/

相关文章:

javascript - SlideToggle 功能不适用于按钮提交

python - 正则表达式:匹配所有内容,直到 `:` 或 `(`

javascript - 奇怪的正则表达式相关的javascript问题(Firefox 3.6.12中的正则表达式全局修饰符问题)

regex - .htaccess:从 URL 中删除 public

javascript - 如何通过 JavaScript 对象数组传递带参数的函数?

javascript - 获取表中的行数

javascript - 使用 JavaScript 控制过渡

javascript - 使用 AngularJS 发布请求

regex - 使用先行正则表达式替换文本

regex - Linux 正则表达式 - 在行首使用 OR 运算符