跳过正文

Nginx Regex

260 字·2 分钟· loading · loading ·
nginx
小橘子Single
作者
小橘子Single
人生如戏,全靠演技

正则表达式语法

  • 本文的正则表达式语法适用于Nginx服务器的配置。
特殊字符说明
*0次或多次匹配前面的字符或子表达式。等效于{0,}
zo*zzoo匹配。
+1次或多次匹配前面的字符或子表达式。等效于{1,}
zo+zozoo匹配,与z不匹配。
?0次或1次匹配前面的字符串或子表达式。等效于{0,1}
该字符串紧随任何其他限定符(*、+、?、{n})、{n,}、{n,m})之后时,匹配模式是非贪婪的。非贪婪模式匹配搜索到的、尽可能少的字符串,而默认的贪婪模式匹配搜索到的、尽可能多的字符串。
zo?zzo匹配,但与 zoo 不匹配;o+?只与oooo中的单个o匹配,而o+与所有o匹配。do(es)?dodoes中的 do 匹配
^匹配搜索字符串开始的位置。如果标志中包括m(多行搜索)字符,还将匹配\n\r后面的位置。
如果将^用作括号表达式中的第一个字符,则会对字符集求反。
^\d{3}与搜素字符串开始处的3个数字匹配。[^abc]与除abc以外的任何字符匹配。
$匹配搜索字符串结尾的位置。如果标志中包含m(多行搜索)字符,还将匹配\n\r前面的位置。
\d{3}$ 与搜索字符串结尾处的3个数字匹配。
.匹配除换行符\n 之外的任何单个字符。若要匹配包括\n在内的任意字符,请使用诸如[\s\S]之类的模式。
[]标记括号表达式的开始和结尾。
[1-4]与1、2、3、4匹配。[^aAeEiIoOuU] 与任何非云隐字符匹配。
{}标记限定符表达式的开始和结尾。
a{2,3}aaaaa 匹配。
()标记子表达式的开始和结尾。Nginx 服务器使用该元字符保存子表达式以备将来之用。
A(\d)A0A9匹配。保存该数字以备将来之用。
|指示在两个或多个项之间进行选择。
`z
/表示JScript中的文本正则表达式模式的开始或结尾。在第二个/后添加单字符标志可以指定搜索行为。
/abc/gi 是与abc 匹配的JScript文本正则表达式。g(全局)标志指定查找模式的所有匹配项,还可以使用i,表示忽略大小写,使搜索不区分大小写。
\b与一个字边界匹配;即字与空格间的位置。
er\bnerver 中的er匹配。但与 verb中的 er不匹配。
\B非边界字匹配。
er\Bverb中的 er匹配。但与 nerver中的 er不匹配。
\d数字字符匹配。等效于[0-9]
在搜索字符串12345中,\d{2}1234匹配。\d12345匹配。
\D非数字字符匹配。等效于[^0-9]。
\D+abc123 def中的abcdef匹配。
\w与以下任意字符匹配: A-Za-z0-9和下划线。等效于[A-Za-z0-9_]
在字符串The quick brown fox...中,\w+Thequickbrownfox匹配。
\W与除A-Za-z0-9和下划线以外的任意字符匹配。等效于[^A-Za-z0-9_]
在字符串The quick brown fox...中,\W+...和所有空格匹配。
[xyz]字符集。与任何一个指定字符匹配。
[abc], 与 plain中的a匹配。
[^xyz]反向字符集。与未指定的任何字符匹配。
[^abc], 与 plain中的plin匹配。
[a-z]字符范围。匹配指定范围内的任何字符。
[a-j],与aj范围内的任何小写字母符匹配。[E-Q], 与EQ范围内的任何大写字母符匹配。
[^a-z]反向字符范围。与不在指定范围内的任何字符匹配。
[^a-j],与不在范围aj内的任何字符匹配。[^E-Q],与不在EQ范围内的任何大写字母符匹配。
{n}正好匹配n次。n是非负整数。
o{2}Bob中的 o不匹配,但与 food中的2个 0匹配。
{n,}至少匹配n次。n是非负整数。
*{0,}相等; +{1,}相等。
{n,m}匹配至少n次,至多m次。mn是非负整数,其中n<=m。逗号和数字之间不能有空格。
?{0,1}相等。在搜索字符串1234567中,\d{1,3}1234567匹配。
(pattern)pattern匹配并保存匹配项。在Nginx服务器的配置文件中,可以通过该方法从匹配的字符串中返回检索的匹配项,以数组元素形式保存。若要匹配括号字符(),请使用转义字符\( 或者 \)
`(Chapter
(?:pattern)pattern匹配,但不保存匹配项;即不会存储匹配项以备将来之用。这对于用or字符`
(?=pattern)积极的预测先行。找到一个匹配项后,将在匹配文本之前开始搜索下一个匹配项。不会保存匹配项以备将来之用。
^(?=.*\d).{4,8}$,匹配长度介于4到8个字符之间,并且必须至少包含一个数字的字符串。在该模式中,.*\d 查找后跟有数字的任意多个字符。对于搜索字符串abc3qr,这与abc3匹配。从该匹配项之前 (而不是之后) 开始;{4,8}与包含4-8个字符的字符串匹配。这与abc3qr匹配。这个正则表达式可以用于判定密码的复杂度。
(?!pattern)消极的预测先行。匹配与pattern不匹配的搜索字符串。找到一个匹配项后,将在匹配文本之前开始搜索下一个匹配项。不会保存匹配项以备将来之用。
\b(?!th)\w+\b 与不与 th开头的单词匹配。该模式中,\b与一个字边界匹配。对于搜索字符串quick,这与第一个空格匹配。(?!th)与非th字符串匹配。这与qu匹配。从该匹配项开始,\w+ 与一个字匹配。这与quick匹配。
^和$指定搜索字符串的开始和结束位置。这将在搜索字符串包含匹配字符之外的任何字符是阻止匹配。
\cx匹配x指示的控制字符。x的值必须在A-Za-z范围内。如果不是这样,则假定c就是文本c字符本身。
\cMCtrl+M或一个回车符匹配。
\xn匹配n,此处的n是一个16进制转义码。16进制转义码必须正好是两位数长。允许在正则表达式中使用ASCII代码。
\x41A匹配。 \x041等效于后跟有 1\x04 (因为n必须正好是两位数)。
\nm匹配num,此处的num是一个正整数。这是对已保存的匹配项的引用。
(.)\1 与2个连续的相同字符匹配。
\n标识一个8进制转义码或反向引用。如果\n 前面至少有n个捕获子表达式,则 n是反向引用。否则,如果 n是8进制数 (0-7),那么 n是8进制转义码。
(\d)\1 与两个连续的相同数字匹配。
\nm标识一个8进制转义码或反向引用。
如果\nm前面至少有 nm个捕获子表达式,那么 nm是反向引用。 如果\nm前面至少有 n个捕获子表达式,则 n是反向引用,后面跟有文本 m。如果上述情况都不存在,当 nm是8进制数字 (0-7)时, \nm匹配8进制转义码 nm
\nmln是8进制数字 (0-3)ml是8进制数字 (0-7)时,匹配8进制转义码 nml
\011与制表符匹配。
\un匹配n,其中 n是以4位16进制数表示的 Unicode 字符。
\u00A9 与版权符号(©) 匹配。
\f换页符。等效于\x0c\cL
\n换行符。等效于\x0a\cJ
\r回车符。等效于\x0d\cM
\tTab 制表符。等效于\x09\cI
\s任何空白字符,包括空格、制表符和换页符。等效于[\f\n\r\t\v]
\S等效于任何非空白字符。等效于[^\f\n\r\t\v]
\v垂直制表符。等效于\x0b\cK