Rumah > pembangunan bahagian belakang > tutorial php > PHP开发技巧(十二)-常用PHP正则表达式的实例代码详解

PHP开发技巧(十二)-常用PHP正则表达式的实例代码详解

黄舟
Lepaskan: 2023-03-06 13:58:02
asal
1741 orang telah melayarinya

        正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。今天本篇博文就是对一些常用的PHP正则表达式做了一个整理,方便以后我们在开发中进行表单验证、字符串查找什么的。

1、匹配手机号码的正则表达式

匹配手机号码规则:
手机号码基本格式:
前面三位为:
移动:134-139 147 150-152 157-159 182 187 188
联通:130-132 155-156 185 186
电信:133 153 180 189
后面八位为:0-9位的数字

/** 
 * @param $mobile string 需要验证的手机号 
 * @return string 
 */  
function pregMobile($mobile)  
{  
    $rule = "/^((13[0-9])|147|(15[0-35-9])|180|182|(18[5-9]))[0-9]{8}$/A";  
    if (preg_match($rule, $mobile, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

2、匹配邮箱的正则表达式

匹配邮箱规则:
邮箱基本格式是 *****@**.**@以前是一个 大小写的字母或者数字开头,紧跟0到多个大小写字母或者数字或 . _ - 的字符串@之后到.之前是 1到多个大小写字母或者数字的字符串.之后是 1到多个 大小写字母或者数字或者.的字符串。

/** 
 * @param $email string 邮箱号 
 * @return string 结果 
 */  
function pregEmail($email)  
{  
    $rule = '/^[a-zA-Z0-9][a-zA-Z0-9._-]*\@[a-zA-Z0-9]+\.[a-zA-Z0-9\.]+$/A';  
    if (preg_match($rule, $email, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

3、匹配电话号码正则表达式

电话号码匹配电话号码规则:
区号:3到5位,大部分都是四位,北京(010)和上海市(021)三位,西藏有部分五位,可以包裹在括号内也可以没有如果有区号由括号包裹,则在区号和号码之间可以有0到1个空格,如果区号没有由括号包裹,则区号和号码之间可以有两位长度的 或者-
号码:7到8位的数字例如:(010) 12345678 或者 (010)12345678 或者 010 12345678 或者 010--12345678

/** 
 * @param $telephone string 固话号码 
 * @return string 
 */  
function pregTelephone($telephone)  
{  
    $rule = '/^(\(((010)|(021)|(0\d{3,4}))\)( ?)([0-9]{7,8}))|((010|021|0\d{3,4}))([- ]{1,2})([0-9]{7,8})$/A';  
    if (preg_match($rule, $telephone, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

4、匹配网址url的正则表达式

匹配url规则:
协议://域名(www/m/wap...).名称.后缀/文件路径/文件名

..../2017030629/165.html
Salin selepas log masuk

协议://域名(www/m/wap...).名称.后缀/文件路径/文件名?参数

.../view.php?aid=165
Salin selepas log masuk

协议://域名(www/m/wap...).名称.后缀/文件路径/文件名/参数

.../tags.php?/正则表达式/1/
Salin selepas log masuk

协议:可有可无,由大小写字母组成;不写协议则不应存在://,否则必须存在://
域名:必须存在,由大小写字母组成
名称:必须存在,字母数字汉字
后缀:必须存在,大小写字母和.组成
文件路径:可有可无,由大小写字母和数字组成
文件名:可有可无,由大小写字母和数字组成
参数:可有可无,存在则必须由?开头,即存在?开头就必须有相应的参数信息

/** 
 * @param $url string url地址 
 * @return string 结果 
 */  
function pregURL($url)  
{  
    $rule = '/^(([a-zA-Z]+)(:\/\/))?([a-zA-Z]+)\.(\w+)\.([\w.]+)(\/([\w]+)\/?)*(\/[a-zA-Z0-9]+\.(\w+))*(\/([\w]+)\/?)*(\?(\w+=?[\w]*))*((&?\w+=?[\w]*))*$/';  
    if (preg_match($rule, $url, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

5、匹配身份证号的正则表达式

匹配身份证号规则:
15位纯数字或者18位纯数字或者17位数字加一位x

/** 
 * @param $idcard string 身份证号码 
 * @return string 结果 
 */  
function pregIdcard($idcard)  
{  
    $rule = '/^(([0-9]{15})|([0-9]{18})|([0-9]{17}x))$/';  
    if (preg_match($rule, $idcard, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

6、匹配地区邮编的正则表达式

匹配邮编规则:
六位数字,第一位不能为0

/** 
 * @param $pos string 邮编号码 
 * @return string 结果 
 */  
function pregPOS($pos)  
{  
    $rule = '/^[1-9]\d{5}$/';  
    if (preg_match($rule, $pos, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

7、匹配IP地址的正则表达式

匹配ip规则:
**1.**2.**3.**4**1可以是一位的 1-9,两位的01-99,三位的001-255**2和**3可以是一位的0-9,两位的00-99,三位的000-255**4可以是一位的 1-9,两位的01-99,三位的001-255四个参数必须存在。

/** 
 * @param $ip string ip地址 
 * @return string 结果 
 */  
function pregIP($ip)  
{  
    $rule = '/^((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))))\.)
    ((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5])))\.){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|
    (0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))$/';  
    if (preg_match($rule, $ip, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

8、匹配时间格式的正则表达式

匹配时间规则:
形式可以为:年-月-日 小时:分钟:秒,年-月-日 小时:分钟,年-月-日:年:1或2开头的四位数,月:1位1到9的数;0或1开头的两位数,0开头的时候个位数是1到9的数,1开头的时候个位数是1到2的数日:1位1到9的数;0或1或2或3开头的两位数,0开头的时候个位数是1到9的数,1或2开头的时候个位数是0到9的数,3开头的时候个位数是0或1小时:0到9的一位数;0或1开头的两位数,个位是0到9;2开头的两位数,个位是0-3分钟:0到9的一位数;0到5开头的两位数,个位是0到9;分钟:0到9的一位数;0到5开头的两位数,各位是0到9。

/** 
 * @param $time string 时间 
 * @return string 结果 
 */  
function pregTime($time)  
{  
    $rule = '/^(([1-2][0-9]{3}-)((([1-9])|(0[1-9])|(1[0-2]))-)((([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))))( ((([0-9])|
    (([0-1][0-9])|(2[0-3]))):(([0-9])|([0-5][0-9]))(:(([0-9])|([0-5][0-9])))?))?$/';  
    if (preg_match($rule, $time, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

9、utf8下匹配中文的正则表达式

/** 
 * @param $chinese string utf8格式中文字 
 * @return string 结果 
 */  
function pregChinese($chinese)  
{  
    $rule = '/([\x{4e00}-\x{9fa5}]){1}/u';  
    if (preg_match($rule, $chinese, $result)) {  
        return $result;  
    } else {  
        return "不匹配!";  
    }  
}
Salin selepas log masuk

相关文章:

PHP最常用的正则表达式的详解

php正则过滤html标签、空格、换行符的代码

php正则替换变量指定字符的方法

PHP正则表达式匹配替换与分割功能实例浅析

Atas ialah kandungan terperinci PHP开发技巧(十二)-常用PHP正则表达式的实例代码详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan