记录nginx正则规则

* 零次或者多次匹配前面的字符表达式,等效于{0,}.; zo*与“zo”和“zoo”匹配

+ 一次或者多次匹配前面的字符表达式,等效于{1,};zo+与“zoo”匹配但是与“z”不匹配

? 零次或一次匹配前面的字符或子表达式。当该字段紧随任何其他限定符(*、+、?、{n}、{n,}或{n,m})之后时,匹配模式是非常贪婪的,非贪婪模式匹配搜索到的、尽可能少的字符串,而默认的贪婪模式匹配搜索到的、尽可能多的字符串。zo? 与“z”和“zoo”不匹配;o+?只于“oooooo”中的单个o匹配。而o+与所有的“o”匹配。do(es)?与do或者does中的do匹配

^ 匹配搜索字符串以什么开始。如果将^用作括号表达式中的第一个字符,则会对字符集求反,^\d{3}与搜索字符串开始出的3个数字匹配。[^abc]与除abc以外的任何字符匹配

$匹配搜索字符串以什么结尾,\d{3}$匹配任何3个数字结尾的

. 额这里其实是一个点号;匹配除了换行符\n之外的任何单个字符

[] 标记括号表达式的开始和结尾,[1-4]与1,2,3,4匹配。[^aAeE],除了a,A,e,E之外的匹配

{} 标记限定符表达式的开始结尾,a{2,3}匹配“aa”和“aaa”

() 标记子表达式的开始和结尾,Nginx服务器使用该元字符保存自表达式以备将来之用A(\d)与“A0”到“A9”匹配,并保存成一个参数

| 这个就可以理解成为一个或匹配了;z|food|cunt 匹配z,food ,cunt

/ 此标识符一般在location中 如果一个/就表示默认匹配这个虚拟主机中的所有资源

\b 与一个字边界匹配,即字与空格间的位置 er\b "never" 中的“er”匹配,但与'verb"中的“er”不匹配

\B 非边界字符匹配,与\b相反

\D 匹配非数字

\w 匹配任意字符

\W 排除A-Z a-z 0-9和下划线以外的任意字符匹配

[a-z] 匹配小写字符

[^a-z] 反字符范围,与上面相反

{n} 正好匹配n次,n是非负整数;o{2}不匹配boy,但是匹配food

{n,} 至少匹配n次

{n,m} 匹配至少n次,最多m次

^和$ 指定搜索字符串的开始和结束为止,这将在搜索字符串包含匹配字符串之外的任何字符时阻止匹配

^(?!.*hello) 匹配不包含hello的正则

这里.*用来表示hello之前可能有其他的字符,为什么还要加^呢,因为如果不加的话,可能匹配到h之后的这个位置上了。

^(?!.*hello|.*asd) 匹配不包含hello或是asd的正则