PHP实现的常规正则验证helper公共类完整实例
本文实例讲述了PHP实现的常规正则验证helper公共类。分享给大家供大家参考,具体如下:
主要代码功能:弥补平时项目对于验证功能这块的不严谨。具体细分的常规验证,手机号/电话/小灵通验证,字符串长度区间合法验证,邮箱验证,使用正则验证数据.
/**
*
*
*常规验证helper公共类
*
*
*/
classCheckForm
{
//手机号/电话/小灵通验证
publicfunctionMobile_check($mobile,$type=array())
{
/**
*手机号码
*移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
*联通:130,131,132,152,155,156,185,186
*电信:133,1349,153,180,189
*/
$res[1]=preg_match('/^1(3[0-9]|5[0-35-9]|8[0-9])\\d{8}$/',$mobile);
/**
*中国移动:ChinaMobile
11*134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
*/
$res[2]=preg_match('/^1(34[0-8]|(3[5-9]|5[017-9]|8[0-9])\\d)\\d{7}$/',$mobile);
/**
*中国联通:ChinaUnicom
*130,131,132,152,155,156,185,186
*/
$res[3]=preg_match('/^1(3[0-2]|5[256]|8[56])\\d{8}$/',$mobile);
/**
*中国电信:ChinaTelecom
*133,1349,153,180,189
*/
$res[4]=preg_match('/^1((33|53|8[09])[0-9]|349)\\d{7}$/',$mobile);
/**
*大陆地区固话及小灵通
*区号:010,020,021,022,023,024,025,027,028,029
*号码:七位或八位
*/
$res[5]=preg_match('/^0(10|2[0-5789]|\\d{3})-\\d{7,8}$/',$mobile);
$type=empty($type)?array(1,2,3,4,5):$type;
$ok=false;
foreach($typeas$key=>$val)
{
if($res[$val])
{
$ok=true;
}
continue;
}
if($mobile&&$ok)
{
returntrue;
}else{
returnfalse;
}
}
//字符串长度区间合法验证
publicfunctionStrlength_check($str,$min=NULL,$max=NULL)
{
preg_match_all("/./u",$str,$matches);
$len=count($matches[0]);
if(is_null($min)&&!empty($max)&&$len<$max){
returnfalse;
}
if(is_null($max)&&!empty($min)&&$len>$min){
returnfalse;
}
if($len<$min||$len>$max){
returnfalse;
}
returntrue;
}
//邮箱验证
publicstaticfunctionisEmail($str)
{
if(!$str){
returnfalse;
}
returnpreg_match('#[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+#is',$str)?true:false;
}
/**
*使用正则验证数据
*@accesspublic
*@paramstring$rule验证规则
*@paramstring$value要验证的数据
*@returnboolean
*/
publicfunctionregex($rule,$value){
$validate=array(
//字段必须,不能为空
'require'=>'/\S+/',
//邮箱验证
'email'=>'/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',
//url验证
'url'=>'/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/',
//货币验证
'currency'=>'/^\d+(\.\d{0,2})?$/',
//数字验证
'number'=>'/^[-\+]?\d+(\.\d+)?$/',
//zip验证
'zip'=>'/^\d{6}$/',
//整数验证
'integer'=>'/^[-\+]?\d+$/',
//浮点数验证
'double'=>'/^[-\+]?\d+(\.\d+)?$/',
//英文验证
'english'=>'/^[A-Za-z]+$/',
'gt0'=>'/^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/',
//合法帐号
'account'=>'/^[a-zA-Z][a-zA-Z0-9_]{1,19}$/'
);
//检查是否有内置的正则表达式
if(isset($validate[strtolower($rule)]))
$rule=$validate[strtolower($rule)];
returnpreg_match($rule,$value)===1;
}
functionCheckPwd($pwd,$min=NULL,$max=NULL)
{
if(strlen($pwd)>$max||strlen($pwd)<$min||preg_match("/^\d*$/",$pwd)||preg_match("/^[a-z]*$/i",$pwd))
{
returnfalse;
}
returntrue;
}
}
is_null()检测变量是否为NULL。
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。