我使用string对象的search()方法查找正则表达式和字符串之间的匹配。
它可以很好地处理英文单词:
"google".search(/\bg/g) // return 0但此代码不适用于日语字符串:
"アイスランド語".search(/\bア/g) // return -1如何更改正则表达式以查找日语字符串和正则表达式之间的匹配?
发布于 2011-10-26 17:05:53
不幸的是,Javascript是一个“仅限ASCII”的正则表达式。不支持Unicode (我的意思是Unicode非ASCII字符没有“分成类”)。例如,\d仅为0-9 )。如果需要在Javascript中使用高级正则表达式(Unicode正则表达式),可以尝试使用http://xregexp.com/
我们甚至不会深入研究代理对的问题。Javascript中的字符是一个UTF-16点,因此它并不总是一个“完整的”Unicode字符。幸运的是,日语应该完全在BMP中(但请注意,Han unification在平面2中,因此每个字符都是2xUTF-16字符)
如果你想读一些关于Unicode的东西,你可以从Wiki Mapping of Unicode characters开始。
发布于 2011-10-26 16:58:54
问题出在\b上。因为\b仅匹配:
如果第一个字符是单词,并且字符串中的最后一个字符是单词,并且字符串中有两个字符,其中一个是单词字符,另一个不是单词字符,则返回
(请参阅:http://www.regular-expressions.info/wordboundaries.html)
在JavaScript中,单词字符是字符类[a-zA-Z0-9_] (ref /单词边界/ ECMA = ASCII)。
https://stackoverflow.com/questions/7900539
复制相似问题