常用正则说明
https://mp.weixin.qq.com/s/0eX1Aa3mLbRgf-duvIQU3A
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本...
正则实例
| 正则 | 说明 | 实例 |
|---|---|---|
| 身份证 | /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/ |
|
| 手机号 | /^0?(13|14|15|17|18|19)[0-9]{9}$/ |
|
| 银行卡 | /^\d{16}|\d{19}$/ |
|
/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/ |
||
| 网址 | /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+$/ |
|
| 电话号码 | /^[0-9-()()]{7,18}$/ |
|
| 日期 | /^\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}$/ |
2017-02-51 |
| 无特殊字符的用户名 | /^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/ |
hello@# 不通过 |
技巧
后向引用
$str='<b>abc</b>'; Pattern= '/<b>(.*)<\/b>/'; preg_replace($pattern, '\\1', $str);
贪婪模式
用.*? 取消贪婪模式 /<b>.*?<\/b>/ 用 U取消贪婪 '/<b>.*<\/b>/U'
常用函数
preg_match(), preg_match_all(), Preg_replace(), //替换 preg_split() //分割
中文匹配
UTF-8汉字编码范围是0x4e00-0x9fa5,
ANSI(gb2312)环境下,0xb0-0xf7,0xa1-0xfe
UTF-8要使用u模式修正符使模式字符串被当成UTF-8,
ANSI(gb2312)环境下,要使用chr将Asc码转换为字符
$str='中文'Pattern ='/[\xt{4e001-\x{t9fa5}]+/u';
匹配 img 的 src 值
$str='<img alt="测试" id="aaa" src="aaa.jpg" />'; $pattern='/<img. *?src="(.*?).*?\/?>/i' // .*? 为取消贪婪 Preg_match( $Pattern, $str, $match);
修正模式
i 不区分大小写 m 将字符串的每一行分别进行匹配 e 对匹配的结果做PHP语法处理 s 将字符串视为单行,换行符作为普通字符. U 取消贪婪模式 x 将模式中的空白忽略. A 强制仅从目标字符串的开头开始匹配. D 模式中的美元元字符仅匹配目标字符串的结尾. u utf-8中文匹配
正则
| 元字符 | 描述 |
|---|---|
| . | 句号匹配任意单个字符除了换行符. |
| ? | 0或1 |
| * | >=0 |
| + | >=1 |
| [ ] | 字符种类. 匹配方括号内的任意字符. |
| [^ ] | 否定的字符种类. 匹配除了方括号里的任意字符 |
| {n,m} | 匹配num个大括号之前的字符 (n <= num <= m). |
| (xyz) | 字符集, 匹配与 xyz 完全相等的字符串. |
| | | 或运算符,匹配符号前或后的字符. |
| \ | 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ | |
| ^ | 从开始行开始匹配. |
| $ | 从末端开始匹配. |
赞赏码
非学,无以致疑;非问,无以广识

浙公网安备 33010602011771号