【发布时间】:2019-12-15 02:27:48
【问题描述】:
我有一个产生太多结果的自动完成,因为我使用了一个非常贪婪的模糊搜索正则表达式模式:它只是查找所有输入的字符出现在任何地方(以相同的顺序)。只需将.*? 添加到每个输入的字符即可。
在以下示例中,键入 auto cont 会生成正则表达式 a.*?u.*?t.*?o.*? .*?c.*?o.*?n.*?t.*? 并产生:
-
A链接图形的替代文本 must描述链接目标or 用途 - 1.1.1 非文本Content - A -
Autocompletes 必须以可访问的方式实现 - 4.1.2a 高级controls(小部件) - Bre
adcrumbs 或 progress indicators 必须是 recognizable non-visually - 1.3.1 信息和 Relationships - A
当自动完成主要包含非常短的选项时,这非常有用,但对于较长的选项,它往往会令人困惑,并且不允许以快速而有意义的方式缩小选项范围。
所以我想改变行为:从现在开始,空格应该限制搜索,因此用户可以输入许多术语(由空格分隔)并且每个术语仅与选项中的另一个术语匹配。
这意味着,在上面的示例中,仍然应该找到第二个选项,因为两个输入的术语(auto 和 cont)都作为选项中的术语存在(由空格分隔):
-
Autocompletes 必须以可访问的方式实现 - 4.1.2a 高级controls(小部件)
顺便说一句,搜索应该仍然是模糊的,所以输入类似atc trl 的内容应该仍然会产生结果。
【问题讨论】:
标签: regex autocomplete fuzzy-search