【发布时间】:2021-10-26 17:06:51
【问题描述】:
我想在一个字符串中查找给定字符串(除以空格)的所有匹配项。 (例如,iTunes 搜索框的工作方式)。
例如,“ab de”和“de ab”都将在“abcde”上返回true(也是“bc ea" 或任何订单都应返回 true)
如果我用通配符替换空格,“ab*de”将在“abcde”上返回真,但不是“de*ab”。 [我使用 * 而不是 Regex 语法只是为了解释]
我找不到任何纯正则表达式解决方案。 我能想到的唯一解决方案是拆分搜索词并运行多个正则表达式。
是否有可能找到一个涵盖所有这些选项的纯正则表达式?
【问题讨论】:
-
为什么? 这并不是正则表达式的设计初衷,那么你为什么要把它硬塞进正则表达式呢?只需单独搜索每个字符串。
-
为什么
ab*de匹配abcd?e在哪里?此外,模式ad de是否也适用于给定短语ad hominem(因为找到ad)?星号是什么意思:应该匹配所有前面的非空白字符,还是只匹配前面的字符? -
@Amber :我只是在想纯正则表达式会更快。我使用此搜索动态过滤结果以获取下拉列表。所以它必须很快。
-
我很确定没有任何纯正则表达式解决方案。
Some people, when confronted with a problem, think 'I know, I'll use regular expressions.' Now they have two problems.- Jamie Zawinski -
@Rob W:我的错。我解决了我的问题(它是“abcde”中的“abde”)。是的,“”表示所有非空白字符都应该匹配。
标签: javascript regex