这个问题在这里已有答案:
美好的一天,
我目前正在研究用Javascript制作的搜索栏组件。我想找到一种方法来保存每个字符串结果,其中至少有一个单词以输入提供的值为前缀。
这是一个例子:
经过一些研究,我找到了一个简单的方法,使用\ b元字符:
let _regex = new RegExp('\\b(inputValue)', 'gi'),
_match = _regex.exec("My Full Sentence");
说实话,只要句子不是由重音字符组成,它就能很好地工作。事实上,当一个单词以重音字符开头时,\ b元字符不能按预期工作。
例如 :
我创建了一个包含更多示例的JSFiddle:https://jsfiddle.net/9L7vee46/46/
因此,我想知道是否存在使用\ b元字符具有正确行为的解决方案。
谢谢你的帮助。
规范化文本和搜索字符串以使用相同类型的重音字符。
在Unicode中,由于历史原因,某些字符有两种不同类型的重音字符:单个代码点和多个代码点。您的正则表达式库以不同方式对待它们,因为实际上它们是不同的。在搜索之前,选择一个并用其替换另一个用于每个歧义的实例(读取:对于每个有两个编码的字符)。
在ES6中,您可以使用"".normalize()
执行此操作。