我使用字符串对象的search()
方法来查找正则表达式和字符串之间的匹配。
它适用于英语单词:
"google".search(/\bg/g) // return 0
但是这段代码对日语字符串不起作用:
"アイスランド語".search(/\bア/g) // return -1
如何更改正则表达式以查找日语字符串和正则表达式之间的匹配?
答案 0 :(得分:4)
可悲的是Javascript是一个“仅限ASCII”的正则表达式。不支持Unicode(我的意思是Unicode非ASCII字符不是“分为类”。所以\d
例如只有0-9)。如果您需要Javascript中的高级正则表达式(Unicode正则表达式),则可以尝试http://xregexp.com/
我们甚至不会深入探讨代理对的问题。 Javascript中的字符是UTF-16点,因此它并不总是“完整”的Unicode字符。幸运的是日语应完全在BMP中(但请注意Han unification在平面2中,因此每个字符都是2x UTF-16字符)
如果您想阅读有关Unicode的内容,可以从Wiki Mapping of Unicode characters开始。
答案 1 :(得分:3)
问题是\b
。由于\b
仅匹配:
(见:http://www.regular-expressions.info/wordboundaries.html)
在JavaScript中,单词字符是字符类[a-zA-Z0-9_]
(ref /字边界/ ECMA = ASCII)。