本文目录一览:
史上最全的PHP正则表达式
一、校验数字的表达式
1 数字:
^[0-9]*$
2 n位的数字:
^\d{n}$
3 至少n位的数字:
^\d{n,}$
4 m-n位的数字:
^\d{m,n}$
5 零和非零开头的数字:
^(0|[1-9][0-9]*)$
6 非零开头的最多带两位小数的数字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 带1-2位小数的正数或负数:
^(\-)?\d+(\.\d{1,2})?$
8 正数、负数、和小数:
^(\-|\+)?\d+(\.\d+)?$
9 有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
10 有1~3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
11 非零的正整数:
^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的负整数:
^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非负整数:
^\d+$ 或 ^[1-9]\d*|0$
14 非正整数:
^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非负浮点数:
^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮点数:
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮点数:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 负浮点数:
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮点数:
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
二、校验字符的表达式
1 汉字:
^[\u4e00-\u9fa5]{0,}$
2 英文和数字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 长度为3-20的所有字符:
^.{3,20}$
4 由26个英文字母组成的字符串:
^[A-Za-z]+$
5 由26个大写英文字母组成的字符串:
^[A-Z]+$
6 由26个小写英文字母组成的字符串:
^[a-z]+$
7 由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
8 由数字、26个英文字母或者下划线组成的字符串:
^\w+$ 或 ^\w{3,20}$
9 中文、英文、数字包括下划线:
^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:
^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%',;=?$\"等字符:
[^%',;=?$\x22]+
12 禁止输入含有~的字符:
[^~\x22]+
三、特殊需求表达式
1、 Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2 、域名:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3 、InternetURL:
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%=]*)?$
4 、手机号码:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5 、电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6 国内电话号码(0511-4405222、021-87888822):
\d{3}-\d{8}|\d{4}-\d{7}
7 、身份证号:
15或18位身份证:
^\d{15}|\d{18}$
15位身份证:
^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
18位身份证:
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
8、 短身份证号码(数字、字母x结尾):
^([0-9]){7,18}(x|X)?$
或
^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 、帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 、密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
^[a-zA-Z]\w{5,17}$
11 、强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
12、 日期格式:
^\d{4}-\d{1,2}-\d{1,2}
13、 一年的12个月(01~09和1~12):
^(0?[1-9]|1[0-2])$
14 、一个月的31天(01~09和1~31):
^((0?[1-9])|((1|2)[0-9])|30|31)$
15 、钱的输入格式:
16 、1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":
^[1-9][0-9]*$
17、 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:
^(0|[1-9][0-9]*)$
18 、3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:
^(0|-?[1-9][0-9]*)$
19 、4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:
^[0-9]+(.[0-9]+)?$
20 、5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:
^[0-9]+(.[0-9]{2})?$
21、 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:
^[0-9]+(.[0-9]{1,2})?$
22、 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 、8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 、备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
25 、xml文件:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 、中文字符的正则表达式:
[\u4e00-\u9fa5]
27 、双字节字符:
[^\x00-\xff]
(包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
28 、空白行的正则表达式:\n\s*\r (可以用来删除空白行)
29 、HTML标记的正则表达式:
(\S*?)[^]*.*?|.*? / (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
30 、首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
31 、腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
32 、中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
33、 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)
请写PHP高手帮帮忙!
这个注册页面是我自己以前写的,希望对你有所帮助!
有什么问题你可以来我的baidu空间一起交流!
我的空间地址是:
关于php:
为个是php的运行环境安装:
对了你没事匿名做什么??
那10分加在这题上多好!(*^_^*)
有什么不懂的你可以发消息给我!
?php
/*****************************因时间问题,本因将需要存入数据库中的数据进行格式化,在存储进去
输出时,反转义****************
if(!get_magic_quotes_gpc())//判断php魔术特性是否打开了
{
addslashes();//转义
stripslashes();//反转义
}
**********************************************************************************************************/
session_start();//开始一个会话,检查会话ID是否存在,如果存在将会话ID所属会话变量载入,否则创建一个新的会话ID
//先获取所有的表单值,并去除它们的前后空格
$user= trim($_POST['user']);
$pwd= trim($_POST['pwd']);
$pwd2= trim($_POST['pwd2']);
$email=trim($_POST['email']);
$yzm= trim($_POST['yzm']);
$redio= trim($_POST['redio']);
$quzi= trim($_POST['quzi']);
$answer=trim($_POST['answer']);
$name= trim($_POST['name']);
$sex= trim($_POST['sex']);
$date= trim($_POST['year']).trim($_POST['month']).trim($_POST['day']);
$qq= trim($_POST['qq']);
$diqu= trim($_POST['diqu']);
echo "ol class='tishi'";
/**************************注:在这里,只要一有错识就给$error就赋上一个值,省的还要将有可能出错的**********************/
if(!empty($_POST['submit']))//如果按钮不为空
{
if(!empty($user)!empty($pwd)!empty($pwd2)!empty($email)!empty($yzm)!empty($redio))//如果六个必埴项都不为
{
if(strlen($user)4||strlen($user)18)//如果$user的字符长度小于"4" 或 大于"18"
{
echo "li用户名,输入范围不得小于4个字符或大于18个字符/libr";
$error="I\'ve found still another mistake"; //有错误$error赋值
}
else //否则,即$user的字符长度大于"4" 或 小于"18"
{
require("lookup_user.php");//包含一个文件
if($count0)//如果$count的值大于"0"
{
echo "font color='red'对不起,该用户名已存在!/font";
$error="I\'ve found still another mistake";
}
mysql_close($link);//关闭连接
}
/************ 必选项验证 **********/
if($pwd!=$pwd2)//验证密码是否相同
{
echo "li对不起两次输入的密码不相同!/libr";
$error="I\'ve found still another mistake";
}
function str_len($object,$write)//要使用好几次,写个函数节省代码
{
if(!empty($object)) //必选项和可选项都可以进入到这里的,而可选项是可以为空(不填)的,所以要判断一下!
{
if(strlen($object)4||strlen($object)18)//如果形参小于"4" 或者 大于"18"
{
echo "li".$write.",输入范围不得小于4个字符或大于18个字符/libr";
$error="I\'ve found still another mistake";
}
}
}
str_len("$pwd","密码");//调用函数
str_len("$pwd2","确认密码");
if(!eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$',$email))//用正则表达式来检查eamil的格式
{
echo "li您的电子邮件格式输入错误,请输入有效的电子邮件!/libr";
$error="I\'ve found still another mistake";
}
if($yzm!=$_POST['hidden_yzm'])//检查验证码输入是否错误
{
echo "li对不起你的验证码输入错误!/libr";
$error="I\'ve found still another mistake";
}
if($redio!="yes")//没有同意协议
{
echo "li你不同意使用许可协议,注册无法进行!/libr";
$error="I\'ve found still another mistake";
}
/*********************************** 可选项验证 **********************************************/
echo str_len($quiz,"密码提示问题");//调用函数
echo str_len($answer,"密码回答问题");
echo str_len($name,"姓名");
if($quiz==$answer)//为了安全性,密码提示问题和密码回答问题的值,不应该相同
{
echo "li密码提示问题和密码回答问题的值,不应该相同!/li";
$error="I\'ve found still another mistake";
}
if(!empty($qq))//可选项要判断是否为空
{
if(!eregi('^[0-9]+$',$qq))//用正则表达式来检查qq的格式
{
echo "liQQ号必须为(0-9)之间的数字!/li";
$error="I\'ve found still another mistake";
}
}
echo "/ol";
}
else//必选项只要有一个为空
{
echo "font size='3 'color='red'用户信息必填项没有填写完整!/font";
$error="I\'ve found still another mistake";
}
}
?
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""
html
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
title/title
style type="text/css"
!--
div {
font-family: "宋体";
font-size: 12px;
font-style: normal;
line-height: normal;
font-weight: normal;
font-variant: normal;
color: #000000;
}
.style4 {color: #FF0000}
.tishi {
font-family: "宋体";
font-size: 14px;
font-weight: bold;
color: #FF0000;
}
.style6 {color: #FF0000; font-size: 14px; }
--
/style
/head
body
form name="form1" method="post" action=""
table width="87%" height="329" border="0" align="center" cellpadding="0" cellspacing="1" bordercolor="#D4D0C8"
tr bgcolor="#CCCCCC"
td colspan="2"div align="center"
h2注册页面 /h2
/div/td
/tr
tr bgcolor="#CCCCCC"
td colspan="2"div align="center"strong 为了密码的安全,请仔细填写(区分大小写)!请注意栏目后加 "span class="style4"*/span"为必填项/strong/div/td
/tr
tr bgcolor="#CCCCCC"
td colspan="2"div align="center" class="style4"必填项没填写完整,注册无法进行!/div/td
/tr
tr bgcolor="#CCCCCC"
td width="13%"div align="right"用户名:/div/td
td width="87%"
div align="left"
input name="user" type="text" id="user" size="25" maxlength="18" ?php if(!empty($user)) echo "value=".$user;?
(字符数:4-18之间)span class="style4"*/span
input type="submit" name="lookup" value="检查用户名是存在"
?php
//在数据库中查找用户是否存在
if(!empty($_POST['lookup']))//如果检查用户名按钮不为空
{
if(strlen($user)4||strlen($user)18)//如果$user的字符长度小于4 或 大于18
{
echo "font color='red'用户名,输入范围不得小于4个字符或大于18个字符/font";
$error="I\'ve found still another mistake";
}
else
{
require("lookup_user.php");//包含一个文件
if($count0)//如果$count大于"0"
{
echo "font color='red'对不起,该用户名已存在!/font";
$error="I\'ve found still another mistake";
}
else//否则,即$count小于"0"
{
echo "font color='red'该用户名可用!/font";
}
mysql_close($link);//关闭连接
}
}
?
/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"密码: /div/td
td div align="left"
input name="pwd" type="password" id="pwd" size="25" maxlength="18"
!--如果$pwd不为空,就将它设为表单的初始值,以下雷同!--
(字符数:4-18之间)span class="style4"*/span
input name="hid_pwd" type="hidden" ?php if(!empty($pwd)) echo "value=".$pwd;?
/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"确认密码:/div/td
td
div align="left"
input name="pwd2" type="password" id="pwd2" value="" size="25" maxlength="18"
(字符数:4-18之间)span class="style4"*/span/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"密码提示问题:/div/td
td
div align="left"
input name="quiz" type="text" id="quiz" size="25" maxlength="18" ?php if(!empty($quiz)) echo "value=".$quiz;?
(字符数:4-18之间,一个汉字2个字符数.)/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"密码回答问题:/div/td
td div align="left"
input name="answer" type="text" id="answer" size="25" maxlength="18" ?php if(!empty($answer)) echo "value=".$answer;?
(字符数:4-18之间,不要与密码提示问题相同)/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"姓名:/div/td
td
div align="left"
input name="name" type="text" id="name" size="10" maxlength="18" ?php if(!empty($name)) echo "value=".$name;?
(字符数:4-18)/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"性别:/div/td
td
div align="left"
input name="sex" type="radio" value="男" checked ?php if(!empty($sex)=="男") echo "value=".$sex;?
男
input type="radio" name="sex" value="女" ?php if(!empty($sex)=="女") echo "value=".$sex;?
女/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"出生日期:/div/td
td
div align="left"
select name="year" id="year"
?php
for($year=1900;$year=2007;$year++)
{
?
option value="?php echo $year;?" ?php if($year==date('Y')) echo "selected";??php echo $year;?/option
?php
}
?
/select
select name="month" id="month"
?php
for($month=1;$month=12;$month++)
{
if($month10){ $month="0".$month;}//如果$month小于10就给$month前面加一个"0"
?
option value="?php echo $month;?" ?php if($month==date('m')) echo "selected";??php echo $month;?/option
?php
}
?
/select
select name="day" id="day"
?php
for($day=1;$day=31;$day++)
{
if($day10){ $day="0".$day;}
?
option value="?php echo $day;?" ?php if($day==date('d')) echo "selected";??php echo $day;?/option
?php
}
?
/select
/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"QQ号:/div/td
td
div align="left"
input name="qq" type="text" id="qq" size="25" maxlength="11" ?php if(!empty($qq)) echo "value=".$qq;?
/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"地区:/div/td
td
div align="left"
input name="diqu" type="text" id="diqu" ?php if(!empty($diqu)) echo "value=".$diqu;?
/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"电子邮件:/div/td
td
div align="left"
input name="email" type="text" id="email" size="25" ?php if(!empty($email)) echo "value=".$email;?
(请正确填写电子邮件,注意大小写,用于密码遗失找回!)span class="style4"*/span/div/td
/tr
tr bgcolor="#CCCCCC"
tddiv align="right"验证码:/div/td
tddiv align="left"
span class="style6"
?php
require("verify.php");
$hidden_yzm = createValidate();
echo $hidden_yzm;
?
input type="hidden" name="hidden_yzm" size="16" value="?php echo $hidden_yzm;?" maxlength="5"!--将验证码值设置成隐含域的值,以便传递值--
/span
/div/td
/tr
tr bgcolor="#CCCCCC"
td height="18"div align="right"验证码:/div/td
td
div align="left"
input name="yzm" type="text" id="yzm" size="5" maxlength="5"
(请按照上面显示的字母与数字输入附加码!)span class="style4"*/span
/div/td
/tr
tr bgcolor="#CCCCCC"
td colspan="2" div align="center"我已经阅读a href="confer.htm" target="_blank"《网站》最终用户使用许可协议/a/div/td
/tr
tr bgcolor="#CCCCCC"
td height="27" colspan="2" div align="center"
input name="redio" type="radio" value="yes" checked
我同意该协议议
input name="redio" type="radio" value="no"
我不同意该协 span class="style4"*/span/div/td
/tr
tr bgcolor="#CCCCCC"
td colspan="2"
div align="center"
input type="submit" name="submit" value="提交"
input name="reset" type="reset" id="reset" value="取消"
/div/td
/tr
/table
/form
?php /****************在另一个页面中插入数据,安全,快速******************/
if(!empty($_POST['submit']))//只有点击提交之后,才执行所输值的检查,所以一定要加上这一句
{ //一定要加如果不加
if($error!="I\'ve found still another mistake")//如果没有任何错误
{
$_SESSION['userinfo']="符合条件";//就给$_SESSION['userinfo']赋上一个值,以便在另一个页面判断输入的值是否完全正确
echo "script language='javascript'document.form1.action='success.php';document.form1.submit();/script";
}//使用js代码改变表单的action,然后将表单的值提交
}
?
/body
/html
PHP 帮忙写个正则表达式 判断QQ邮箱格式
$qqmail='33555555@qq.com';
if(preg_match('|^[1-9]\d{4,10}@qq\.com$|i',$qqmail)){
echo $qqmail,' 是qq邮箱';
}else{
echo $qqmail,' 不是qq邮箱';
}