为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript RegExp + Word边界+ unicode字符

Javascript RegExp + Word边界+ unicode字符

我正在建立搜索,我将使用它的javascript自动完成。我来自芬兰(芬兰语)所以我必须处理一些特殊的角色,如ä,ö和å当用户在搜索输入字段中键入文本时,我尝试将文本与数据匹配。如果用户输入例如“ää”,则这是一个不能正常工作的简单示例。“äl”也是如此var title = "this is simple string with finnish word tämä on ääkköstesti älkää ihmetelkö";// Does not workvar searchterm = "äl";// does not work//var searchterm = "ää";// Works//var searchterm = "wi";if ( new RegExp("\\b"+searchterm, "gi").test(title) ) {    $("#result").html("Match: ("+searchterm+"): "+title);} else {    $("#result").html("nothing found with term: "+searchterm);   }http://jsfiddle.net/7TsxB/那么我怎样才能让这些ä,ö和å字符与javascript正则表达式一起使用?我想我应该使用unicode代码但是我应该怎么做?这些字符的代码是:[\ u00C4,\ u00E4,\ u00C5,\ u00E5,\ u00D6,\ u00F6]=>äÄåÅöÖ
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

\bJavaScript RegEx中的字符类实际上只对简单的ASCII编码有用。  \b是字符串\w和\W集合之间的边界的快捷代码,以及\w字符串的开头或结尾。这些字符集仅考虑ASCII“单词”字符,其中\w等于[a-zA-Z0-9_]并且\W是该类的否定。


这使得RegEx角色类在处理任何真实语言方面基本无用。


\s 如果搜索条件仅由空格分隔,则应该适用于您想要执行的操作。


查看完整回答
反对 回复 2019-09-03
?
Qyouu

TA贡献1786条经验 获得超11个赞

这个问题很老,但我认为我找到了一个更好的解决方案,用于使用unicode字母的正则表达式中的边界。使用XRegExp,您可以实现有效的\ b边界扩展它


XRegExp('(?=^|$|[^\\p{L}])')

结果是4000多个字符长,但似乎工作很好。


一些解释:(?=)是一个零长度前瞻,它查找开始或结束边界或非字母unicode字符。最重要的想法是前瞻,因为\ b不会捕获任何东西:它只是真或假。


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 838 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信