我对正则表达式还很陌生,我想做的是以下事情。
假设我有一个关键字数组:
// 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;
}
关于javascript - 如何从数组构建正则表达式或选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186406/