编辑以澄清:oneword
是用户可能使用的搜索查询。我需要将oneword
,one word
或word one
与此正则表达式匹配
如何在任何给定的顺序中匹配包含或不包含空格的字符串?
这是我当前的查询/^(?=.*one)(?=.*word).*$/i
学分:http://www.rubular.com/r/QFEfj9lMn3
所以给出了文字
oneword one word word one
和搜索查询/^(?=.*one)(?=.*word).*$/i
匹配所有三个,但/^(?=.*oneword).*$/i
仅匹配文本的第一部分。
是否有更好的方法来解决这个问题,而不是在每个字母前添加一个可选字符?
感谢
答案 0 :(得分:0)
尝试这个简单的正则表达式生成
function showMatches(sampleInput, searchInput) {
console.log(sampleInput, searchInput);
if (sampleInput.length && searchInput.length) {
var regexStr = searchInput.split(" ").join("\\\s*") + "|" + searchInput.split(" ").reverse().join("\\\s*");
var regex = new RegExp(regexStr, "gi");
//console.log(regex);
console.log(sampleInput.match(regex))
}
}
showMatches("one word word one oneword", "one word");
<强>解释强>
\\\s*
"|"
注意 - 您可能还希望使用here显示的方法从搜索输入中转义特殊正则表达式字符。