今天在了解“正则表达式绕过”的时候,发现“正则表达式修饰符”是很重要一件事情,而我们往往会忽略它,特意给大家分享一下:
最常用的正则表达式修饰符
/u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字)
/i 不区分大小写匹配(如果表达式里面有 a, 那么 A 也是匹配对象)
/s 单行匹配
/m 多行匹配
/g 全局匹配(全文查找出现的所有匹配字符,返回的结果可以是多个;如果不加/g最多只会匹配一个)
注意:
以上这些修饰符是可以混合使用的。例如 /ig、/ie等。
/ig (全文查找、忽略大小写)
其它正则表达式修饰符
/U 只匹配最近的一个字符串;不重复匹配
/x 将模式中的空白忽略
/A 强制从目标字符串开头匹配
/D 如果使用$限制结尾字符,则不允许结尾有换行
/e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行;
正则表达式修饰符PHP用法示例:
<?php
$str = '欢迎来到付杰博客:fuieace.com';
preg_match("/[\x{4e00}-\x{9fa5}a-zA-Z0-9_-]+/u",$str,$res)
var_dump($res);