php中文正则表达式
‘壹’ 超常用的php正则表达式收集整理
以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。
一、表单验证匹配
验证账号,字母开头,允许
5-16
字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z
A-Z]$
验证账号,不能有空格,不能非数字:^\d+$
验证用户密码,以字母开头,长度在
6-18
之间:^[a-zA-Z]\w{5,17}$
验证是否含有
^%&',;=?$\
等字符:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是
2004-10-22
格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$------------评注:匹配形式如010-12345678
或0571-12345678
或
0831-1234567
匹配中国邮政编码:^[1-9]\d{5}(?!\d)$
匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})------------评注:中国的身份证为15
位或18
位
不能为空且二十字节以上:^[\s|\S]{20,}$
二、字符匹配
匹配由
26
个英文字母组成的字符串:^[A-Za-z]+$
匹配由
26
个大写英文字母组成的字符串:^[A-Z]+$
匹配由
26
个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和
26
个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$
匹配空行:\n[\s|
]*\r
匹配任何内容:[\s\S]*
匹配中文字符:[\x80-\xff]+
或者
[\xa1-\xff]+
只能输入汉字:^[\x80-\xff],{0,}$
匹配双字节字符(包括汉字在内):[^\x00-\xff]
三、匹配数字
只能输入数字:^[0-9]*$
只能输入n位的数字:^\d{n}$
只能输入至少n位数字:^\d{n,}$
只能输入m-n位的数字:^\d{m,n}$
匹配正整数:^[1-9]\d*$
匹配负整数:^-[1-9]\d*$
匹配整数:^-?[1-9]\d*$
匹配非负整数(正整数
+
0):^[1-9]\d*|0$
匹配非正整数(负整数
+
0):^-[1-9]\d*|0$
匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配非负浮点数(正浮点数
+
0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非正浮点数(负浮点数
+
0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
四、其他
匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*?
/>
匹配网址
URL
:[a-zA-z]+://[^\s]*
匹配
IP
地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
提示
上述正则表达式通常都加了
^
与
$
来限定字符的起始和结束,如果需要匹配的内容包括在字符串当中,可能需要考虑去掉
^
和
$
限定符。
以上正则表达式仅供参考,使用时请检验后再使用,希望通过这些超常用的PHP正则表达式
‘贰’ PHP正则匹配中文字母数字正则表达式
方法一
代码如下 if(preg_match("/^d*$/" " ")) { echo "全数字 "; }
if(preg_match("/^[a z]*$/i" "fdsFDfd")) { echo "全字母 "; }
if(preg_match("/^[a zd]*$/i" "fd fd ")) { echo "有数字有字母 "; }
中文汉字
代码如下 $username=$_REQUEST[ username ]; if(!preg_match("/^[a z xa xff]{ }$/" $username)) { echo" r "; exit; }
上面是比较散的 下面把几个总结到一起来
lishixin/Article/program/PHP/201311/21332
‘叁’ php 匹配中英文的正则表达式。。。。谢谢啦~~~
<?php
header('Content-type:text/html;charset=utf-8');
$str = "php编程ddd汉字%#^%字符";
$pa = '/[a-zA-Z\x{4e00}-\x{9fa5}]/u';
preg_match_all($pa,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
运行结果:
Array
(
[0] => Array
(
[0] => p
[1] => h
[2] => p
[3] => 编
[4] => 程
[5] => d
[6] => d
[7] => d
[8] => 汉
[9] => 字
[10] => 字
[11] => 符
)
)
‘肆’ PHP常用正则表达式汇总
1.
^d+$"//非负整数(正整数
+
0)
2.
"^[0-9]*[1-9][0-9]*$"//正整数
3.
"^((-d+)|(0+))$"//非正整数(负整数
+
0)
4.
"^-[0-9]*[1-9][0-9]*$"//负整数
5.
"^-?d+$"//整数
6.
"^d+(.d+)?$"//非负浮点数(正浮点数
+
0)
7.
"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数
8.
"^((-d+(.d+)?)|(0+(.0+)?))$"//非正浮点数(负浮点数
+
0)
9.
"^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数
10.
"^(-?d+)(.d+)?$"//浮点数
11.
"^[A-Za-z]+$"//由26个英文字母组成的字符串
12.
"^[A-Z]+$"//由26个英文字母的大写组成的字符串
13.
"^[a-z]+$"//由26个英文字母的小写组成的字符串
14.
"^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串
15.
"^w+$"//由数字、26个英文字母或者下划线组成的字符串
16.
"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"//email地址
17.
"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"//url
18.
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/
//
年-月-日
19.
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/
//
月/日/年
20.
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"
//Emil
21.
/^((+?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9]+)?$/
//电话号码
22.
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"
//IP地址
23.
匹配中文字符的正则表达式:
[u4e00-u9fa5]
24.
匹配双字节字符(包括汉字在内):[^x00-xff]
25.
匹配空行的正则表达式:n[s|
]*r
26.
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*)
/>/
27.
匹配首尾空格的正则表达式:(^s*)|(s*$)
28.
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
29.
匹配网址URL的正则表达式:^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
30.
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
31.
匹配国内电话号码:(d{3}-|d{4}-)?(d{8}|d{7})?
32.
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
33.
元字符及其在正则表达式上下文中的行为:
34.
将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
35.
^
匹配输入字符串的开始位置。如果设置了
RegExp
对象的Multiline
属性,^
也匹配
’n’
或
’r’
之后的位置。
36.
$
匹配输入字符串的结束位置。如果设置了
RegExp
对象的Multiline
属性,$
也匹配
’n’
或
’r’
之前的位置。
37.
*
匹配前面的子表达式零次或多次。
38.
+
匹配前面的子表达式一次或多次。+
等价于
{1,}。
39.
?
匹配前面的子表达式零次或一次。?
等价于
{0,1}。
40.
{n,}
n
是一个非负整数,至少匹配n
次。
41.
{n,m}
m
和
n
均为非负整数,其中n
<=
m。最少匹配
n
次且最多匹配
m
次。在逗号和两个数之间不能有空格。
‘伍’ PHP的正则表达式中使用中文(并匹配中文)的问题,原串为UTF8
<?php
$str = "中国势力是(烟消云散、再转在、匣介)中国、类别置顶帖(来哦见好就收)、炒肉可示、需要城";
$preg2 = "/中国/sim" ;
preg_match_all($preg2, $str, $strResult, PREG_PATTERN_ORDER);
print_r($strResult);
?>
我的PHP文件是UTF-8编码,不知道你的$str是从哪里得到的呢?像上面一样,我直接给$str赋值,这样使用 /中国/sim 这个表达式没有任何问题,会不会是你$str字符串的编码与页面编码不一致呢?
‘陆’ PHP 正则表达式 【以汉字“王”开头,后面匹配1~2个汉字】的正则表达式怎么写求高手指教
$pa = '/[\x4e00-\x9fa5]/U';
var_mp(preg_match($pa,'汉字'));
/*********************************************/
$pa = '/\x29579[\x4e00-\x9fa5]{2}/U';
‘柒’ php正则表达式匹配一段中文,中间有换行,空白,应该怎么写
有多种处理方法:
1、使用[sS]匹配任意字符,而不是使用“.”
2、使用s单行修饰模式,例:$pattern='#abc.*?def#s';//能匹配abc换行def
3、使用s*匹配换行和空格,php里s能匹配空白字符,含换行
php里的中文使用[x7f-xff]表示,因此,使用正则:
$pattern='#[x7f-xff]+(?:s*[x7f-xff]+)*#';即可
‘捌’ 网址中带有中文字符的php正则表达式
在中文字符出现的地方用[^`]+表示,你也可以用其它字符代替“`”,只要中文字符内处不可能出现的字符就行。
意思是:不是“`”字符,除了“`”的一切字符,包括中文,重复一次或多次。
为什么要这样表示中文字符的集合呢?
可能是因为在正则表达式中没有表示中文字符的字符类或集合或范围。甚至[[:print:]]+都不行!
测试如下:
<?php
$str='ffdjsfjshgfhfg<12><模式>d<括号内的部分>f符类中fs<字符类中可tryrt用的元字符为>:sjssdfsfs,sfsfjksjk,<iogfds12346789>括号内的部分';
$b='[<][^<]+[>]';//有可能出现中文字符的地方用[^<]+表示
//$b='[<][[:print:]]+[>]';
while(eregi($b,$str,$array))
{
$str_h=str_replace("<","<",$array[0]);
$str_h=str_replace(">",">",$str_h);
echo $str_h."</br>";
$str=str_replace($array[0],'',$str);
}//From J.L
?>