鉴于大家对Javascript十分关注,我们编辑小组在此为大家搜集整理了“正则表达式\w不能匹配中文字符的的原因”一文,供大家参考学习
正则表达式 常用的元字符说明中\w匹配字母或数字或下划线或汉字代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
测试发现\w不能匹配中文字符,代码如下:
var reg=/^[a-zA-Z]\w{5,17}/;
if (!(reg.test(s)))
{
alert("用户名长度在6~18之间,只能以字母开头,包含字符、数字和下划线!") ;
return false ;
}
最后测试研究发现;\w能不能匹配汉字要视你的操作系统和你的应用环境而定
在某些情况下,\w也会匹配本地字符集,比如中文系统的中文,全角数字等,所以在明确要求是A~Z,a~z,0~9,_ 中的一个的时候,用[A-Za-z0-9_],而不用\w
如果正则表达式\w不能匹配中文字符,你可以从以下两方面查找原因:
一是要看你的系统是什么系统,中文系统下是可以匹配汉字的
二是要看你的应用环境,如果是在C#程序中,是可以匹配汉字的,在javascript或验证控件中,是不可以匹配汉字的
其它\d,\s也是如此