php 正则表达式匹配中文规则

utf-8环 境下中文的匹配

\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下

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

或许你也需要匹配双字节字符,中文也是双字节的字符

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

注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

在ANSI(gb2312)环 境下

匹配全部的gb2312编 码表的字符:/[".chr(0xb0)."-".chr(0xf7)."]+/
单纯匹配汉字而不匹配全角标点:/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])/

该表达式能匹配一个中文字符。

匹配全角标点而不匹配汉字:/([".chr(0xa1)."-".chr(0xa3)."][".chr(0xa1)."-".chr(0xff)."])/

例子

 代码如下 复制代码

1、使用preg_match函数匹配汉字

<?php 
$str='asd我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]#u'; 
preg_match($key,$str,$res); 
print_r($res) ; 
?> 
结果: 
Array([0]=>我)
2、使用preg_match函数匹配汉字(连续1个以上)

<?php 
$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]{1,}#u'; 
preg_match($key,$str,$res); 
print_r($res) ; 
?> 
结果 
Array([0]=>我们)
3、改善1,使用preg_match_all函数匹配

<?php 
$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]#u'; 
preg_match_all($key,$str,$res); 
print_r($res) ; 
?> 
结果 
Array([0]=>Array([0]=>我[1]=>们))
4、改善2,使用preg_match_all函数匹配汉字(连续1个以上)

<?php 
$str='34353434我们cd'; 
$key='#[\x{4e00}-\x{9fa5}]{1,}#u'; 
preg_match_all($key,$str,$res); 
print_r($res) ; 
 
?> 
结果 
Array([0]=>Array([0]=>我们))

由结果可看出,使用[\x4e00-\x9fa5]这个正则表达式可以匹配到中文。
preg_match或者preg_match_all的不同的地方就是,前者匹配一次就完了(无论是否匹配成功),而后者,会从待匹配的字符串的开头到结尾匹配一遍。

时间: 2024-08-01 11:58:53

php 正则表达式匹配中文规则的相关文章

php正则表达式匹配中文

在php中来判断字符串是否为中文,就会沿袭这个思路:  代码如下 复制代码 <?php $str = "php编程"; if (preg_match("/^[u4e00-u9fa5]+$/",$str)) { print("该字符串全部是中文"); } else { print("该字符串不全部是中文"); } ?> 不过,很快就会发现,php并不支持这样的表达,报错: Warning: preg_match()

python正则表达式匹配中文详解

如果你需要知道在python中匹配中文汉字的话我们就必须先查看下表 UTF8 [x01-x7f]|[xc0-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3} UTF16 [x00-xd7][xe0-xff]|[xd8-xdf][x00-xff]{2} JIS [x20-x7e]|[x21-x5f]|[x21-x7e]{2} SJIS [x20-x7e]|[xa1-xdf]|([x81-x9f]|[xe0-xef])([x40-x7

正则表达式匹配中文与双字节的代码_正则表达式

匹配中文字符 [\u4e00-\u9fa5] C# 复制代码 代码如下: class Class1 { static void Main() { string s = "中文 chinese"; Regex regx = new Regex("[\u4e00-\u9fa5]+"); Match m = regx.Match(s); Console.WriteLine(m.Groups[0].Value); // 中文 Console.ReadKey(); } } 匹

正则表达式匹配中文与双字节的代码

匹配中文字符 [\u4e00-\u9fa5] C# 复制代码 代码如下: class Class1 { static void Main() { string s = "中文 chinese"; Regex regx = new Regex("[\u4e00-\u9fa5]+"); Match m = regx.Match(s); Console.WriteLine(m.Groups[0].Value); // 中文 Console.ReadKey(); } } 匹

php用正则表达式匹配中文实例详解_php实例

在php中汉字正则可能有些朋友觉得很简单,但是在使用时会发现在gbk编码与uft8编码可能会有点区别哦,下面小编来介绍一下.gbk编码下汉字正则 1.判断字符串是否全是汉字 复制代码 代码如下: <?php    $str = '全部是汉字测试';    if (preg_match_all("/^([x81-xfe][x40-xfe])+$/", $str, $match)) {        echo '全部是汉字';      } else {        echo '不

php 正则表达式匹配中文汉字

preg_match("/[a-z]{3,14}/",$content,[可选]$a);这个返回布尔值,$a得到的是数组,把匹配到的字符防在$a; 正则汉字 echo (mb_eregi("[x80-xff].","中d文") ? "有" : "无") ."汉字"; echo (mb_eregi("^([x80-xff].)+$","中文") ?

正则表达式——匹配规则介绍_正则表达式

基本模式匹配 一切从最基本的开始.模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符.模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符.重复出现,或表示上下文.例如: ^once 这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串.例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配.正如如^符号表示开头一样

匹配中文字符的正则表达式

原文:匹配中文字符的正则表达式 匹配中文字符的正则表达式: [u4e00-u9fa5]   评注:匹配中文还真是个头疼的事,有了这个表达式就好办了   匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)   匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行   匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部

php 匹配中文字符的正则表达式

php教程 匹配中文字符的正则表达式 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ascii字符计1) */   $str = "singlepoint单点日志"; if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str)) { print("该