JavaScript正则表达式之匹配中文验证

使用js正则表达式匹配中文,需要了解中文字符在unicode编码中所处的区间。这样才能够了解表达式的匹配原理。

首先在正则表达式中使用 Unicode,必须使用\u开头,接着是字符编码的四位16进制表现形式

简单匹配中文方法: /[^\u0000-\u00FF]/ (匹配非单字节字符 )

另错误方法:

/[^\u00-\uFF]/ (匹配 非单字节字符、还包括一些全半角符号如,.(){}'”!等、还有vwxyz字符)

说明: //u0000-u00ff.包含unicode单字节编码( 0-255编码)包含基本控制字符和拉丁文字母。 采用该否定表达式,粗略判断是否含有中文。
  
具体的匹配中文及字符方法:/[\u4E00-\u9FA5\uF900-\uFA2D]/
说明: u4e00-u9fbf :  unicode CJK(中日韩)统一表意字符。u9fa5后至u9fbf为空
uF900-uFAFF :  为unicode  CJK 兼容象形文字  。uFA2D后至uFAFF为空
具体可参考unicode编码表:http://www.nengcha.com/code/unicode/class/

//是否含有中文(也包含日文和韩文)
function isChineseChar(str){
var reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
return reg.test(str);
}
//同理,是否含有全角符号的函数
function isFullwidthChar(str){
var reg = /[\uFF00-\uFFEF]/;
return reg.test(str);
}

下面是网上看到的另外一种写法

var pattern1 = /[\u4e00-\u9fa5]+/g;
var pattern2 = /\[[\u4e00-\u9fa5]+\]/g;
var contents = "[微笑][撇嘴][发呆][得意][流泪]";
content = contents.match(pattern1);
alert(content);
content = contents.match(pattern2);
alert(content);

通过 pattern1 alert content 已经获得了汉字内容,那么pattern2的意义在于注意点 [、],没什么,很简单的一个分析,

注意的是 [\u4e00-\u9fa5] 用来匹配中文就可以了。

var result1 = (new RegExp("^[\\u4e00-\\u9fa5]$")).test("学");
var result2 = /^[\u4e00-\u9fa5]$/.test("大");
console.log(result1);//true
console.log(result2);//true

如果您对标点符号中英文匹配比较在意,可以看看下面这个;网页代码如下

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>js正则匹配中文标点符号</title>
<head>
<body>
<input type="text" id="textBox" maxlength="1" />
<input type="button" onclick="checkText()" value="提交" />
<script type="text/javascript">
function checkText()
{
var text = document.getElementById('textBox').value;
//匹配这些中文标点符号 。 ? ! , 、 ; : “ ” ‘ ' ( ) 《 》 〈 〉 【 】 『 』 「 」 ﹃ ﹄ 〔 〕 … — ~ ﹏ ¥
var reg = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/;
if(reg.test(text)){
alert('是中文标点符号');
}else{
alert('不是中文标点符号');
}
}
</script>
</body>
</html>

~~

未经允许不得转载:WEB前端开发 » JavaScript正则表达式之匹配中文验证

赞 (1)