我正在尝试编写一个正则表达式来查找字符串中的整个单词(匹配用户的搜索查询),但我想在达到某个单词后忽略所有内容。
想象以下可能的搜索结果列表:
- Foo(见 Foo 酒吧)
- 酒吧(见 Foo 酒吧)
- 富吧
我想使用正则表达式来测试列表中的每个项目,并且我想忽略“看到”这个词之后的所有内容。例如:
- 如果用户搜索“foo”,我想匹配第一项和第三项:
- Foo(见 Foo 酒吧)
- 酒吧(见 Foo 酒吧)
- 富吧
- 如果用户搜索“bar”,我想匹配第二项和第三项:
- Foo(见 Foo 酒吧)
- 酒吧(见 Foo 酒吧)
- 富吧
我想出的正则表达式是这样的:
^(?!\(see)(\b%SEARCH%)
... where%SEARCH%
被替换为任何搜索词。
不幸的是,这似乎并不适用于所有情况。如果搜索词位于字符串的开头(即“foo”),则似乎正确匹配项目,但如果搜索词出现在字符串的后面(即,列表中第三个项目中的“bar”)则不会.
这是一个说明问题的jsfiddle。在第一个和第三个示例中,一切都按预期工作,但在第二个示例中,第三个项目(“Foo Bar”)也应该匹配,但事实并非如此。
我究竟做错了什么?
笔记:
- 我只想匹配整个单词,因此
\b
- 我还使用
i
修饰符(不区分大小写)和g
修饰符(查找所有匹配项)。