基本
?修饰符1修饰符2
启用修饰符功能
?-修饰符1修饰符2
关闭修饰符功能
(?i) 表示所在位置右侧的表达式开启忽略大小写模式
(?s) 表示所在位置右侧的表达式开启单行模式。
更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
注意:(?s)通常在匹配有换行的文本时使用
(?m) 表示所在位置右侧的表示式开启指定多行模式。
(?i)
以 nginx 为例,这里的 (?i) 表示忽略 /aoo/(.*)
里的大小写,也就是说 /Aoo/(.*)
也可以匹配
rewrite "(?i)/aoo/(.*)" /$1 break;
(?m)
如果一个字符串中包含\n
这种换行符,若正则前缀如果不加(?m)
,则正则匹配的时候会认为是一行。
例如,以 js 为例
不加 m 则无法匹配到,因为 This is an\n antzone good
被当作一行
var str="This is an\n antzone good";
var reg=/an$/;
console.log(str.match(reg));
# 输出
null
加了 m 则可以匹配到,因为 This is an
被当作一行
var str="This is an\n antzone good";
var reg=/an$/m;
console.log(str.match(reg));
# 输出
[
"an"
]
多次调用
(?i)a((?-i)a)
可以匹配Aa和aa,不能匹配AA和aA