如果搜索查询没有空格,则正则表达式匹配字符串与空格

时间:2017-11-14 09:52:12

标签: javascript regex search

编辑以澄清:oneword是用户可能使用的搜索查询。我需要将onewordone wordword one与此正则表达式匹配

如何在任何给定的顺序中匹配包含或不包含空格的字符串?

这是我当前的查询/^(?=.*one)(?=.*word).*$/i 学分:http://www.rubular.com/r/QFEfj9lMn3

所以给出了文字 oneword one word word one和搜索查询/^(?=.*one)(?=.*word).*$/i匹配所有三个,但/^(?=.*oneword).*$/i仅匹配文本的第一部分。

是否有更好的方法来解决这个问题,而不是在每个字母前添加一个可选字符?

感谢

1 个答案:

答案 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显示的方法从搜索输入中转义特殊正则表达式字符。