应该有类似于\w的东西,可以匹配字母或标记类别中的任何代码点(不仅仅是ASCII码),并且希望有像[[P*]]这样的过滤器用于标点符号等。
当前回答
[^\u0000-\u007F]+用于不包括ASCII字符的任何字符。
例如:
有趣的功能(s) 归来- [^ \ u0000 \ u007F]。测试(s); 的 控制台日志(isNonLatinCharacters(“身分");/ /日本 控制台日志(isNonLatinCharacters(“测试");/ /中国 控制台日志(isNonLatinCharacters(حمید");/ /波斯语 控制台日志(isNonLatinCharacters(“테스트");/ /韩国 控制台日志(isNonLatinCharacters(परीक्षण");/ /印地语 控制台日志(isNonLatinCharacters(“מִבְחָן");/ /希伯来语
这里有一些完美的参考:
Unicode范围RegExp生成器
Unicode正则表达式
Unicode 10.0字符代码图表
匹配Unicode块范围
其他回答
2018年9月(2019年2月更新)
regexp /\p{L}/u用于匹配字母(作为unicode类别)
适用于Chrome 68.0.3440.106和Safari 11.1.2 (13605.3.8) 不能在Firefox 65.0上工作:(
下面是一个工作示例
在下面的字段,你应该能够键入字母,但不是数字<br> <input type="text" name="field" onkeydown="return /\p{L}/u.test(event.key)">
我在这里报告这个错误。
更新
经过超过2年的时间:1500035 > 1361876 > 1634135终于修复了这个错误,将在Firefox v.78+中可用
在JavaScript中,\w和\d是ASCII,而\s是Unicode。别问我为什么。JavaScript支持带有Unicode类别的\p,您可以使用它来模拟支持Unicode的\w和\d。
\d使用\p{N}(数字)
[\p{L}\p{N}\p{Pc}\p{M}](字母,数字,下划线,标记)
更新:不幸的是,我错了。JavaScript也不正式支持\p,尽管一些实现可能仍然支持它。JavaScript正则表达式中对Unicode的唯一支持是使用\uFFFF匹配特定的代码点。你可以在字符类的范围内使用它们。
这样就可以了:
/[A-Za-z\u00C0-\u00FF ]+/.exec('hipopótamo maçã pólen ñ poção água língüa')
它显式地选择一个unicode字符范围。 它将适用于拉丁字符,但其他奇怪的字符可能超出这个范围。
如果您正在使用Babel,那么Unicode支持已经可用。
我还发布了一个转换源代码的插件,这样你就可以编写像/^\p{L}+$/这样的正则表达式。然后将这些转换为浏览器能够理解的内容。
下面是插件的项目页面:
babel-plugin-utf-8-regex
[^\u0000-\u007F]+用于不包括ASCII字符的任何字符。
例如:
有趣的功能(s) 归来- [^ \ u0000 \ u007F]。测试(s); 的 控制台日志(isNonLatinCharacters(“身分");/ /日本 控制台日志(isNonLatinCharacters(“测试");/ /中国 控制台日志(isNonLatinCharacters(حمید");/ /波斯语 控制台日志(isNonLatinCharacters(“테스트");/ /韩国 控制台日志(isNonLatinCharacters(परीक्षण");/ /印地语 控制台日志(isNonLatinCharacters(“מִבְחָן");/ /希伯来语
这里有一些完美的参考:
Unicode范围RegExp生成器
Unicode正则表达式
Unicode 10.0字符代码图表
匹配Unicode块范围