许多现代正则表达式实现将\w字符类简写解释为"任何字母,数字或连接标点符号"(通常为下划线).这样一来,像一个正则表达式\w+像火柴的话hello,élève,GOÄ_432或gefräßig.
不幸的是,Java没有.在Java中,\w仅限于[A-Za-z0-9_].这使得像上述那些匹配的单词难以解决.
似乎\b单词分隔符在不应该的位置匹配.
什么是类似.NET,Unicode感知\w或\bJava 的正确等价物?哪些其他快捷方式需要"重写"以使其具有Unicode感知功能?
在JavaScript中,我们可以使用Unicode转义序列匹配单个Unicode代码点或代码点范围,例如:
"A".match(/\u0041/) // => ["A"]
"B".match(/[\u0041-\u007A]/) // => ["B"]
Run Code Online (Sandbox Code Playgroud)
但是,我们如何创建一个正则表达式来匹配一个正确的名称,该名称必须包含使用JavaScript正则表达式的任何Unicode"字母"?有一系列字母吗?JavaScript中的特殊正则表达式序列或字符类?
假设我的网站必须验证可能是拉丁语言的名称,以及希伯来语,西里尔语,日语(片假名,平假名等)在JavaScript中是可行的,或者是委托给后端语言并提供更好的Unicode支持的唯一理智选择?