应该有类似于\w的东西,可以匹配字母或标记类别中的任何代码点(不仅仅是ASCII码),并且希望有像[[P*]]这样的过滤器用于标点符号等。
当前回答
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正则表达式不支持Unicode字符类。但是,有一个库确实提供了这一点:Steven Levithan的优秀XRegExp及其Unicode插件。
在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匹配特定的代码点。你可以在字符类的范围内使用它们。
如果您正在使用Babel,那么Unicode支持已经可用。
我还发布了一个转换源代码的插件,这样你就可以编写像/^\p{L}+$/这样的正则表达式。然后将这些转换为浏览器能够理解的内容。
下面是插件的项目页面:
babel-plugin-utf-8-regex
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+中可用
你还可以使用:
function myFunction() {
var str = "xq234";
var allowChars = "^[a-zA-ZÀ-ÿ]+$";
var res = str.match(allowChars);
if(!str.match(allowChars)){
res="true";
}
else {
res="false";
}
document.getElementById("demo").innerHTML = res;
推荐文章
- 检测用户何时离开网页的最佳方法?
- 当“模糊”事件发生时,我如何才能找到哪个元素的焦点去了*到*?
- React不会加载本地图像
- 如何将Blob转换为JavaScript文件
- 在另一个js文件中调用JavaScript函数
- 如何在svg元素中使用z索引?
- 如何求一个数的长度?
- 跨源请求头(CORS)与PHP头
- 如何用Express/Node以编程方式发送404响应?
- parseInt(null, 24) === 23…等等,什么?
- JavaScript变量声明在循环外还是循环内?
- Ruby正则表达式中\A \z和^ $的区别
- 元素在“for(…in…)”循环中排序
- 在哪里放置JavaScript在HTML文件?
- 什么时候.then(success, fail)被认为是承诺的反模式?