校验用的正则表达式

26 篇文章 0 订阅

1.校验11位手机号码:

/^1[3456789]\d{9}$/
2.校验二代身份证号码:

 /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
3.校验电子邮箱:

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
4.校验2位小数:

/^\d+(\.\d{1,2})?$/
5.校验URL:

/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i
6.校验日期格式:

!/Invalid|NaN/.test(new Date(value).toString())

 

 

三、贪婪匹配与惰性匹配

1、贪婪匹配:就是匹配尽可能多的字符。

比如,正则表达式中m.*n,它将匹配最长以m开始,n结尾的字符串。如果用它来搜索manmpndegenc的话,它将匹配到的字符串是manmpndegen而非man。可以这样想,当匹配到m的时候,它将从后面往前匹配字符n。

2、懒惰匹配:就是匹配尽可能少的字符。

有的时候,我们需要并不是去贪婪匹配,而是尽可能少的去匹配。这时候,就需要将其转为惰性匹配。怎样将一个贪婪匹配转为惰性匹配呢?只需要在其后面添加一个”?”即可。如m.*?n将匹配manmpndegenc,匹配到的字符串是man。

a50f4bfbfbedab6489bd3dd045a9dcc678311e73.png?token=81595b9b2fd4e628885be42c65596569&s=5888347297D841CA1C59D0C30300E0B1uploading.4e448015.gif转存失败重新上传取消

四、PHP常用正则相关函数

1、preg_match

该函数是进行正则表达式的匹配,成功返回1,否则返回0

2、preg_match_all

该函数用于执行一个全局正则表达式匹配,与preg_match不同的是,该函数是匹配所有符合条件内容。

3、preg_replace

该函数执行一个正则表达式的搜索和替换。

五、PHP示例

1、匹配手机号码

<?php$str = '13141081058';$re = preg_match('/^1[3456789]\d{9}$/s',$str,$arr);print_r($re);print_r($arr);

输出结果:

1

Array ( [0] => 13141081058 )

2、匹配E-mail

<?php$str = 'wafu7969@qq.com';$re = preg_match('/^(.+)@(.+)\.(.+)$/s',$str,$arr);print_r($re);print_r($arr);

输出结果:

1

Array ( [0] => wafu7969@qq.com [1] => wafu7969 [2] => qq [3] => com )

3、URL 中取出域名

<?php$str = 'http://www.baidu.com/?search=强哥';$re = preg_match('/^(http:\/\/|https:\/\/)(.+)\//s',$str,$arr);print_r($re);print_r($arr[0]);

输出结果:

1

http://www.baidu.com/

4、查找匹配 <b> 与 </b> 标签的内容

单个p标签:

<?php$str = '<p>我是强哥</p>';$re = preg_match('/^<p>(.*)<\/p>/s',$str,$arr);print_r($re);print_r($arr[1]);

输出结果:

1

我是强哥

多个p标签:

<?php$str = '<p>我是强哥</p><p>你是谁呢?</p>';$re = preg_match_all('/<p>(.*?)<\/p>/m',$str,$arr);print_r($re);print_r($arr[1]);

输出结果:

2

Array

(

[0] => 我是强哥

[1] => 你是谁呢?

)

注意:这里要用惰性匹配,注意(.*?)里面的?。

5、提取图片的地址

<?php$str = '<img src="http://www.baidu.com/meinv.jpg" />';$re = preg_match('/<img src="(.*)" \/>/s',$str,$arr);print_r($re);print_r($arr[1]);

输出结果:

1

http://www.baidu.com/meinv.jpg

5、正则替换

把<p></p>中的“我是强哥”替换成“我是谁”

<?php$str = '<p>我是强哥</p>';$str = preg_replace('/^(<p>)(.*)(<\/p>)$/s','\1我是谁\3',$str);print_r($str);

 

 

这里用到了反向引用,使用反向引用的时候一定要注意:在使用反向匹配的时候都需要使用(),反向匹配时,匹配()里面出现的字符或字符串。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值