php js 正则表达式 中文,php/js汉字正则表达式总结

这篇博客介绍了如何在PHP和JavaScript中使用正则表达式匹配中文汉字和双字节字符。提供了JS和PHP的代码实例,包括匹配全中文字符串的正则和验证输入是否包含非法字符的方法。还探讨了不同编码如GBK2312和UTF-8下的匹配规则,并给出了相应的正则表达式。文章强调理解各种编码的高位和低位范围对于编写正则表达式的重要性。
摘要由CSDN通过智能技术生成

如果我们要匹配中文汉字在php与js中只要利用正则/^[\\x{4e00}-\\x{9fa5}]+$/u,匹配双字节字符(包括汉字在内):[^/x00-/xff]即可,具体如下

js版

匹配中文字符的正则表达式: [/u4e00-/u9fa5]

匹配双字节字符(包括汉字在内):[^/x00-/xff]

实例代码如下:

varreg =  /^[u4e00-u9fa5]+$/;

if(reg.test(str))

{

alert('汉字的干活');

}

计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){returnthis.replace([^/x00-/xff]/g,"aa").length;}

php版

php正则匹配汉字!

/^[x{4e00}-x{9fa5}]+$/u

实例代码如下:

$action= trim($_GET['action']);

if($action=="sub")

{

$str=$_POST['dir'];

//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式

if(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str))//UTF-8汉字字母数字下划线正则表达式

{

echo"您输入的[".$str."]含有违法字符";

}

else

{

echo"您输入的[".$str."]完全合法,通过!";

}

}

当然如果要想字符串全是汉字的GBK2312编码匹配为:

$str="小小子";

if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str)){

print($str."确实全是汉字");

} else{

print($str."这个真 TMD不全是汉字");

}

uft8编码正则

$str="汉字";

if(preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) {

print("该字符串全部是中文");

} else{

print("该字符串不全部是中文");

}

其实只要了解了各个编码的高位与低位的开始与结束,那么自然就可以写出正则,而且直接是十六位的,有啥困难?呵呵。不过要注意,在php里面,表示十六位是用的x。

gbk,gb2312的例子:

$action= trim($_GET['action']);

if($action=="sub")

{

$str=$_POST['dir'];

//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式

if(!preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str))//UTF-8汉字字母数字下划线正则表达式

{

echo"您输入的[".$str."]含有违法字符";

}

else

{

echo"您输入的[".$str."]完全合法,通过!";

}

}

?>

+$/u 的意思:

+ 表示重复1次或多次;

$ 表示匹配末尾;

/ 表示定界符;

u 表示模式字符串被当成 UTF-8;

U 表示第一次匹配后即停止搜索。

要匹配2-4 个,用{2,4}表示: /^[x{4e00}-x{9fa5}]{2,4}$/u

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值