Home > php教程 > PHP源码 > body text

常用PHP正则表达式收集补充

WBOY
Release: 2016-06-08 17:22:35
Original
1088 people have browsed it

正则表达试是我们在开发验证时会常用到的一些规则,下面我整理了在我们用户数据提交时的一些常用的正则表达式,希望这些整理数据对你有帮助。

<script>ec(2);</script>

正则表达式一直以来是我比较头痛的东西,不过工作中是离不开正则表达式的,代码、vim编辑器、awk等Linux命令都广泛应用正则表达式。这是我收集并且测试过的PHP代码中常用的正则表达式,首先建立测试函数:

 代码如下 复制代码

function regTest( $pattern, $str ) {
    var_dump( preg_match($pattern, $str) );
    preg_match_all($pattern,$str,$matches);
    var_dump( $matches );
    var_dump( preg_replace($pattern,$str,'Test') );
}

1. 匹配中文字符

 代码如下 复制代码

$pattern = "/[x{4e00}-x{9fa5}]/u";
$str = "飞晏-feiyan";
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(1) { [0]=> array(2) { [0]=> string(3) "飞" [1]=> string(3) "晏" } }
//string(28) "TestTest-feiyan"

关于汉字的匹配,网上很多给的都是“[u4e00-u9fa5]”,这个正则不一定完全正确。

2. 匹配tab缩进、空格和换行

 代码如下 复制代码

$pattern = "/[x{4e00}-x{9fa5}]/u";
$str = "飞晏-feiyan";
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(1) { [0]=> array(2) { [0]=> string(3) "飞" [1]=> string(3) "晏" } }
//string(28) "TestTest-feiyan"
//string(21) "HelloTestTest,TestPHP"

3. 匹配Email地址

 代码如下 复制代码
$pattern = "[w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*]";
$str = '如有问题,请联系service@lenovo.com或者contact@ibm.com。';
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(4) { [0]=> array(2) { [0]=> string(18) "service@lenovo.com" [1]=> string(15) "contact@ibm.com" } [1]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [2]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [3]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } }
//string(41) "如有问题,请联系Test或者Test。"

  
//使用Filter函数
filter_var($email, FILTER_VALIDATE_EMAIL);

我一般不自己写正则表达式去验证邮箱,使用PHP内置filter函数可以很方便的完成邮箱地址的验证。

4. 匹配国内手机号码和电话号码

 代码如下 复制代码
//固定电话匹配
$pattern = "[d{3,4}-d{7,8}]";
$str = '联系电话010-12345678';
regTest( $pattern, $str );
  
//最简单的匹配手机号匹配
$pattern = "[1d{10}]";
$str = '联系电话15812345678';
regTest( $pattern, $str );

5. 匹配HTML中的图片地址

 代码如下 复制代码

$pattern = '//'; 

$str = 'test'; 

regTest( $pattern, $str );


/**
     * 验证邮政编码
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isPostcode($value,$match='/d{6}/'){
$v = trim($value);
if(empty($v))
    return false;
return preg_match($match,$v);
    }
    /**
     * 验证IP
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isIP($value,$match='/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/'){
$v = trim($value);
if(empty($v))
    return false;
return preg_match($match,$v);
    }

    /**
     * 验证身份证号码
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isIDcard($value,$match='/^d{6}((1[89])|(2d))d{2}((0d)|(1[0-2]))((3[01])|([0-2]d))d{3}(d|X)$/i'){
$v = trim($value);
if(empty($v))
    return false;
else if(strlen($v)>18)
    return false;
return preg_match($match,$v);
    }

    /**
     * *
     * 验证URLwww.111cn.net
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isURL($value,$match='/^(http://)?(https://)?([wd-]+.)+[w-]+(/[dw-./?%&=]*)?$/'){
$v = strtolower(trim($value));
if(empty($v))
    return false;
return preg_match($match,$v);  
    }

补充

表单验证匹配
验证账号,字母开头,允许 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,}$

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!