+ -
当前位置:首页 → 问答吧 → 【常用正则表达式小结】

【常用正则表达式小结】

时间:2008-11-03

来源:互联网



1.
元字符
字符
名字
含义
^
补字符号
指示字符串的开始或者匹配不属于该字符类的字符
$
美元符号
指示字符串的结尾
.
句点
匹配任意单个字符
|
竖线、管道符

\
转义符、反斜杠
转义特殊字符,如\n表示换行符,\ . 表示 .


2.
量词
字符
含义
示例
?
匹配0次或1次
[a-z]?
表示 0-1次的a-z出现
*
匹配0次或多次
[a-z]*
表示 >=0次的a-z出现
+
匹配至少1次
[a-z]+
表示 >=1次的a-z出现
{x}
匹配正好x次
[a-z]{2}
表示 2次的a-z出现
{x,y}
匹配x-y次,二者之间含二者
[a-z]{2,5}
表示 2-5次的a-z出现
{x,}
至少x次
[a-z]{3,}
表示 >=3次的a-z出现

3.
字符类别
字符类别
含义
[a-z]
任意小写字母
[a-zA-Z]
任意字母
[0-9]
任意数字
[ \f\r\t\n\v]
任意空白,包括换页、换行、制表等
[aeiou]
任意元音字母
[[:alnum:]]
任意字母或者数字
[[:alpha:]]
任意字母,同[a-zA-Z]
[[:blank:]]
任意制表符或者空格
[[:digit:]]
任意数字,同[0-9]
[[:lower:]]
任意小写字母
[[:upper:]]
任意大写字母
[[:punct:]]
任意标点符号
[[:space:]]
任意空白

以邮箱合法性检测为实例:

<?php
// @filename
zz.php
// @author
casual0402
// @contact
[email protected]

$testOne = '[email protected]';
$testTwo = '[email protected]';
$testThree = 'djkl&^-+3.com.n';
$testFour = '[email protected]';
$testFive = '[email protected]';

function test($str) {

if(eregi('^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,4}$',$str)){

echo 'email address is ok<br />';

}else {

echo 'email address is not ok<br />';

}
}

test($testOne);
test($testTwo);
test($testThree);
test($testFour);
test($testFive);

?>

输出:
email address is ok
email address is ok
email address is not ok
email address is ok
email address is ok

讲解:^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,4}$
^ 表示开始
[[:alnum:]]表示以字母或者数字开头
[a-z0-9_\.\-]*
表示若干个 [ ] 中的字符,其中\. \- 为转义操作
@ email中需要包含该字符
[a-z0-9\.\-]+
表示至少一个[ ]中的字符,其中组合可以为:gamil
com.cn
com.c等
\.
表示域名中需要的点
[a-z]{2,4}表示
2-4个[ ]中的字符

经夜色—刺猬指教:
^[\w\.]+@[\w]+\.(a-zA-Z\.)+$
更好
其中 \w 匹配包括下划线的任何单词字符 等价于 [a-zA-Z0-9_]

作者: casual0402   发布时间: 2008-11-03

作者: nianjin   发布时间: 2008-11-04

学习学习

作者: 落叶人生   发布时间: 2008-11-05