我是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