加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

中文的简单正则匹配

发布时间:2020-12-14 01:43:51 所属栏目:百科 来源:网络整理
导读:在PHP中使用正则匹配中文,很多时候会出现问题,在不同的编码情况下,正则表达式不太一样,所以希望大家注意,在使用正则匹配中文的时候,多多注意编码问题。 在JS下能够使用的在PHP中不一定可以使用,比如:/^[a-zA-Z0-9_._.u4E00-u9FA5uF900-uFA

在PHP中使用正则匹配中文,很多时候会出现问题,在不同的编码情况下,正则表达式不太一样,所以希望大家注意,在使用正则匹配中文的时候,多多注意编码问题。


在JS下能够使用的在PHP中不一定可以使用,比如:/^[a-zA-Z0-9_._.u4E00-u9FA5uF900-uFA2D]+$/;


如果在PHP中使用 :u4E00-u9FA5uF900-uFA2D 来匹配,那么会在运行PHP脚本的时候出现错误,


Warning: preg_match(): Compilation failed: PCRE does not support L,l,N,P,p,U,u,or X at offset 6


那是因为:PHP正则表达式中不支持下列 Perl 转义序列:L,or X


但是在在 UTF-8 模式下,允许用“x{...}”,花括号中的内容是表示十六进制数字的字符串,一下给出了一个简单的中文匹配示例:


//匹配中文、英文字符、数字、特殊符号全角除外
	$str='adf^^**^k2)(*&3423sfdgsdf#$%^423jkalk阿拉丁解放路dsfj';
	$rule="/([x80-xff]{1,})/";
	echo"<pre>";
	preg_match_all("/([?=[x21-x7e]{1,}|[A-Za-z0-9]{1,}|[x{4e00}-x{9fa5}]{1,})/u",$str,$m);
	var_dump($m);

	//支持特殊符号(半角)
	$rule="/((?=[x21-x7e])[^A-Za-z0-9]){1,}/u";
	preg_match($rule,$m);
	var_dump($m);

	//匹配中文????
	$str="erwerwe.?中文?匹配?324#¥%……";
	$rule="/([x{4e00}-x{9fa5}?]{1,})/ius";
	preg_match($rule,$m);
	var_dump($m);

	//匹配邮件
	$email="qwerty234234@234567_#$%@yahoo.cn";
	//$email="bieru52@aliyun.com";
	$rule="/(^[a-zA-Z0-9][a-zA-Z0-9._-]{1,30}@[a-zA-Z0-9_-]{1,10}(.[a-zA-Z0-9_-]{1,10}){0,4}).[a-zA-Z]{1,10}$/";
	$m=preg_match($rule,$email);
	var_dump($m);


双字节字符编码范围

GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk
UTF-8 (Unicode)
u4e00-u9fa5 (中文)


参考文档:正则表达式30分钟入门教程

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读