正则表达式 preg_match 匹配中文

preg_match 匹配中文出错 
2010年01月06日 星期三 14:55

错误提示:

Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 2 in XXXXX on line 3

错误原因:

preg_match("/^[\u4e00-\u9fa5]{1,4}$/",$str);

在使用上述代码匹配汉字时,出现如题错误。

测试1:

preg_match("/^[\u4e00-\u9fa5]{1,4}/",$str);

去掉结尾的“$”,错误依旧。

测试2:

preg_match("/^[\x4e00-\x9fa5]{1,4}/",$str);

将u改为“x”,错误消失,但是匹配失败。

测试3:

preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/",$str);

加上大括号,错误提示:

<b>Warning</b>: preg_match() [<a href=‘function.preg-match‘>function.preg-match</a>]: Compilation failed: character value in \x{...} sequence is too large at offset 9 in <b>D:XXX.php</b> on line <b>25</b><br /> 
测试4:

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

加入参数u,错误消失,匹配正确。

另外一个方法:放弃使用preg_match函数,改用ereg(),直接解决~

=============================

特别注意加小写的u

来源:http://fengweihong.iteye.com/blog/1133094

原文地址:https://www.cnblogs.com/bluealine/p/10308330.html

时间: 2024-10-30 06:15:55

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

正则表达式之匹配中文汉字的正则表达式介绍

这篇文章主要介绍了通过正则表达式准确匹配出字符串中存在的中文汉字,同时还有匹配双字节字符的正则,需要的朋友可以参考下 \w匹配的仅仅是中文,数字,字母,但是对于特殊需求来讲,仅匹配中文时常会用到 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 或许你也需要匹配双字节字符,中文也是双字节的字符 匹配双字节字符(包括汉字在内):[^\x00-\xff] 以下图为例:我想要的仅仅只是某一标题下的文章的来源,但是下面的正则就匹配到了多少分钟前,多少小时前这显然不是我想要的,这种情况下我就需要

【转】正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度

匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾:^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:^

PHP使用正则表达式匹配中文,有部分匹配不出来的解决办法

今天在开发的时候有个需要,就是匹配出一条计价公式里的材料文本,示例:[羊脂玉价格]*[羊脂玉重量]+[白金价格]*[白金重量]+[皓石价格]*[皓石重量]+[钻石价格]*1.5*[钻石重量]+[硬金价格]*1.67*[硬金重量],要匹配出[***_价格],就是中括号内,以_价格结尾的字符串(代表材料的名称),我用的语言是PHP,写了一条正则表达式出来,代码如下: $pattern = "/\\[([^_价格]+)_价格\\]/"; $res = preg_match_all($patt

sublimetext 使用正则表达式匹配中文

[\x{4e00}-\x{9fa5}] ============================================= 参考资料 1.在javascript下正确的\x4e00-\x9fa5并不完全适合php中文正则表达式:2.匹配中文全角字符的正则:   ^[\x80-\xff]*^/  :3.GB2312.汉字.字母.数字.下划线正则表达式:[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+:4.UTF-8汉字.字母.数

常用的正则表达式(例如:匹配中文、匹配html)(转载)

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

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

原文:匹配中文字符的正则表达式: [/u4e00-/u9fa5] 这里是几个主要非英文语系字符范围(google上找到的): 2E80-33FFh:中日韩符号区.收容康熙字典部首.中日韩辅助部首.注音符号.日本假名.韩文音符,中日韩的符号.标点.带圈或带括符文数字.月份,以及日本的假名组合.单位.年号.月份.日期.时间等. 3400-4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字. 4E00-9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字. A000-

C#匹配中文字符串的4种正则表达式分享

本文介绍在C#中使用匹配中文的正则表达式,包括纯中文.有中文.中文开头.中文结尾等几个正则表达式示例.在正则表达式中,中文可以通过Unicode编码来确定正则表达式范围. 在C#中,匹配中文的正则表达式用Unicode来表示时,范围是: [\u4e00-\u9fa5].所以,在此基础上,我们可以得到如下一些正则表达式. 1.匹配字符串全部是中文字符的正则表达式 代码如下: "^[\u4e00-\u9fa5]+$" 说明:“^”表示字符串开头,“$”表示字符串结束,“[\u4e00-\u

java匹配中文的正则表达式

[\u4E00-\u9FA5]* public static void regxChinese(){ // 要匹配的字符串 String source = "<span title='5 星级酒店' class='dx dx5'>"; // 将上面要匹配的字符串转换成小写 // source = source.toLowerCase(); // 匹配的字符串的正则表达式 String reg_charset = "<span[^>]*?title=\'

常用正则表达式大全!(例如:匹配中文、匹配html)

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