NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
* [正则实例](https://www.kancloud.cn/idcpj/python/902022#_2) * [技巧](https://www.kancloud.cn/idcpj/python/902022#_14) * [后向引用](https://www.kancloud.cn/idcpj/python/902022#_15) * [贪婪模式](https://www.kancloud.cn/idcpj/python/902022#_22) * [常用函数](https://www.kancloud.cn/idcpj/python/902022#_28) * [中文匹配](https://www.kancloud.cn/idcpj/python/902022#_36) * [匹配 img 的 src 值](https://www.kancloud.cn/idcpj/python/902022#_img__src__48) * [修正模式](https://www.kancloud.cn/idcpj/python/902022#_54) * [正则](https://www.kancloud.cn/idcpj/python/902022#_67) ## 正则实例 | 正则 | 说明 | 实例 | | --- | --- | --- | | 身份证 | `/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/` | | | 手机号 | `/^0?(13|14|15|17|18|19)[0-9]{9}$/` | | | 银行卡 | `/^\d{16}|\d{19}$/` | | | Email | `/^\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); ~~~ ### 贪婪模式 1. 用`.*?`取消贪婪模式 `/<b>.*?<\/b>/` 2. 用`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 完全相等的字符串. | | | | 或运算符,匹配符号前或后的字符. | | \\ | 转义字符,用于匹配一些保留的字符`[ ] ( ) { } . * + ? ^ $ \ |` | | ^ | 从开始行开始匹配. | | $ | 从末端开始匹配. | 点赞