【发布时间】:2017-11-14 09:52:12
【问题描述】:
编辑澄清: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 只匹配文本的第一部分。
有没有比在每个字母前添加一个可选字符更好的方法来解决这个问题?
谢谢
【问题讨论】:
-
我不明白你的问题。您能否明确说明您希望从正则表达式匹配中得到什么结果。
-
除非我遗漏了什么,否则你不能直接写出这两种可能性,比如:
/one\s*word|word\s*one/? -
我从 searchQuery 中获取字符串。用户可能会搜索
one word或oneword。我想创建一个匹配两个搜索字符串的正则表达式查询oneword one word word one的所有三个变体所以问题不是词序而是匹配它,如果搜索查询是用空格写的或没有空格(相反的方式是琐碎) -
你需要有一些的方法来知道这两个词是什么。执行如下搜索是不切实际的:
s ?t ?a ?c ?k ?o ?v ?e ?r ?f ?l ?o ?w -
除非你有一些实用的方法来预测如何分割单词,否则我建议使用 ElasticSearch 而不是正则表达式。
标签: javascript regex search