我正在建立搜索,我将使用它的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 如果搜索条件仅由空格分隔,则应该适用于您想要执行的操作。
Qyouu
TA贡献1786条经验 获得超11个赞
这个问题很老,但我认为我找到了一个更好的解决方案,用于使用unicode字母的正则表达式中的边界。使用XRegExp,您可以实现有效的\ b边界扩展它
XRegExp('(?=^|$|[^\\p{L}])')
结果是4000多个字符长,但似乎工作很好。
一些解释:(?=)是一个零长度前瞻,它查找开始或结束边界或非字母unicode字符。最重要的想法是前瞻,因为\ b不会捕获任何东西:它只是真或假。
添加回答
举报
0/150
提交
取消