让 typeahead.js 在查找建议时忽略括号

get typeahead.js to ignore parenthesis when finding suggestions

我正在使用 typeahead.js 征求建议。除了一个问题外,它运行良好。我的建议有括号,像这样:

"Elizabeth (Liz)"
"Robert (Bob)"
"Michael (Mike)"

typeahead.js 只匹配单词的开头,因此如果用户键入 "Liz" 它不会建议第一个项目。如果您输入“(Liz”,它将匹配。但用户应该能够开始输入姓名或昵称以查看匹配的建议。

如何让 typeahead.js 忽略括号并在两个词中查找匹配项?

jsfiddle 上的工作示例:https://jsfiddle.net/laurakurup/mru39nk2/

重要说明:我不希望 typeahead.js 在字符串中的任何位置查找匹配项。我知道这会解决问题,但是当有数以万计的建议时,这些建议将无济于事。例如,键入 "Beth" 会建议“Bethany”,而不是 "Elizabeth"。我需要保留此功能。除括号外,建议应仅匹配每个单词的开头。

感谢您的帮助。

如果您将 datumTokenizer 更改为:

datumTokenizer: Bloodhound.tokenizers.nonword

预测将以相同的方式在单词的开头执行,但不包括符号,而不仅仅是拆分空格。

然后你得到 EliLizElizabeth (Liz) 的建议。

您可以将 Bloodhound.tokenizers.nonword 分词器用作 datumTokenizer

在内部它使用这个表达式 split(/\W+/) 它将字符串拆分为不属于单词的任何字符。例如符号和空格。

这里有一个 link 给 js fiddle js fiddle

可选地,您可能希望实现自己的分词器以按空格和括号分隔。