Mux*_*uxa 0 javascript regex pattern-matching
我想在javascript中实现一个匹配文本中一个或多个关键字的正则表达式匹配函数.每个关键字都必须以任何顺序找到.关键字由用户输入.
这是我在的地方:
\b(smart.*\bwork.*|work.*\bsmart.*)
Run Code Online (Sandbox Code Playgroud)
"trying to work smarter""trying to work" or "trying to be smart"这种方法的问题是我必须创建关键字集的不同有序排列(无论如何).
所以问题是:
"\b(smart.*|work.*)<magic:all,anyorder>"什么将确保找到所有关键字,并以任何顺序)[1,2,3]生成[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]])UPDATE
这旨在用于在客户端(在浏览器中)搜索一组字符串(10-50个字符串).
除非用户正在寻找可能出现在较大单词中的小词,否则我的朋友Juan的答案将会很好.在这种情况下,您需要回退到正则表达式.您可以使用仅在找到字符串时使用RE的混合方法.就像是:
String.prototype.containsAll = function(){
for (var i=0; i < arguments.length; i++) {
if (this.indexOf( arguments[i] ) > -1 ) {
// test with regular expressions
var re = new RegExp('\\b' + escapeRe(arguments[i]) + '\\b')
if (!re.test(this)) {
return false;
}
} else {
return false
}
}
return true;
function escapeRe(re) {
return re.replace(/[$.*+?()\[\]\\^]/g, function(chr) {
return '\\' + chr;
});
}
}
Run Code Online (Sandbox Code Playgroud)
从未测试过,尤其不是escapeRe位.