基本的元字符
\d 匹配任意数字字符
. 匹配任意单个字符
\D \d的反义
| 逻辑或操作符
\f 换页符
[] 匹配字符集合中的一个字符
\n 换行符
[^] 对字符集合求非
\r 回车符
- 定义一个区间(例如A-Z)
\s 匹配一个空白字符
\ 对下一个字符转义
\S \s的反义
数量元字符
\t 制表符(Tab字符)
* 匹配前一个字符(子表达式)的零次或多次重复
\v 垂直制表符
*? *的懒惰型版本
\w 匹配任意字母数字字符或下划线字符
+ 匹配前一个字符(子表达式)的一次或多次重复
\W \w的反义
+? +的懒惰型版本
\x 匹配一个十六进制数字
? 匹配前一个字符(子表达式)的零次或一次重复
\0 匹配一个八进制数字
{n} 匹配前一个字符(子表达式)的N次重复 回溯引用和前后查找
{m,n} 匹配前一个字符(子表达式)至少M次且至多N次的重复
() 定义一个子表达式
{n,} 匹配前一个字符(子表达式)N次或更多次重复
\1 匹配第1个子表达式;\2代表第二个子表达式,依次类推
{n,}? {n}的懒惰型版本 ?= 向前查找
位置元字符
?<= 向后查找
^ 匹配字符串的开头
?! 负向前查找(非)
\A 匹配字符串的开头
?!= 负向后查找
$ 匹配字符串的结束
?() 条件(if then)
/z 匹配字符串的结束
?()| 条件(if(then else)
/< 匹配单词的开头 大小写转换
/> 匹配单词的结束
/E 结束\L或\U转换
/b 匹配单词边界(开头和结束)
/l 把下一个字符转换为小写
/B \b的反义
/L 把后面的字符转换为小写,直到遇见\E为止
特殊字符元字符
/u 把下一个字符转换为大写
[\b] 退格字符
/U 把后面的字符转换为大写,直到遇见\E为止
\c 匹配一个控制字符
匹配模式
(?m) 分行匹配模式
POSIX 字 符 类
[:alnum:] 任何一个字母或数字(等价于[a-zA-Z0-9]
[:alpha:] 任何一个字母(等价于[a-zA-z])
[:blank:] 空格或制表符(等价于[\t]
[:cntrl:] Ascii控制字符(ASCII0到31,再加上ASCII127
[:digit:] 任何一个数字(等价于[0-9])
[:graph:] 和[:print:]一样,但不包括空格
[:lower:] 任何一个小写字母(等价于[a-z])
[:print:] 任何一个可打印字符
[:punct:] 既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符
[:space:] 任何一个空白字符,包括空格(等价于[^\f\n\r\t\v])
[:upper:] 任何一个大写字母(等价于[A-Z])
[:xdigit:] 任何一个十六制数字(等价于[a-fA-F0-9])
JavaScript不支持在正则表达式里使用POSIX字符类。
(\()?[2-9]\d\d(?(1)\)|-)\d{3}-\d{4} 电话号码 条件
248-555-1234
(222-222-222
(<[aA]\s*[^>]+>\s*)?<[iI][Mm][Gg]\s*[^>]+>(?(1)\s*</[aA]>)
<a href="/home"><img src="/image/"></a>
<img src="/imge">
IP地址
\b(((\d)|(\d\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))\.){3}((\d)|(\d\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))\b
192.168.12.13 1111.125.11.11 256.22.1.13 255.255.255.255 f.25.11.5
\baaa\b 单词 aaa{2} (aaa){2}
hello are you aaa,bbb aaaa aaaa bbb ccc
dddaaaaaaaaa
URL地址
(([fF][tT][pP])|([hH][tT]{2}[pP][Ss]?))://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?\b
<a href="mailto:http://www.51.com">http://www.51.com</a> <a href="mailto:https://aaa.fesa.fds">https://aaa.fesa.fds</a> <a href="mailto:http://fsa.fsa.fsda">http://fsa.fsa.fsda</a>. <a href="mailto:ftp://fkjla.fsa">ftp://fkjla.fsa</a>.. <a href="mailto:ftp://fkjla.fsa">ftp://fkjla.fsa</a> <a href="mailto:http://f22jla.55a">http://f22jla.55a</a>
邮箱
\b[\w][\w\d.]*@[\w\d.]+[\w\d]\b
[email protected] [email protected].
[email protected] fdsaklfgsadljgral.fsd
[email protected],
回溯 <[hH]([0-6])>.*?</[hH]+\1>)
<h1>fdsa</h1><h1>fsa</h2>
<h2>fewyhtrytr</h1>
[ ]+(\w+)[ ]+\1
of of are are are abc is are
\b-\b 边界
fsda-fsa - fsa-fsafsae
(19|20)\d{2} 子表达式
(19|20)\d{2}(-\d{2}){2}
1967-08-22
2001-09-22
fsad:fdsafsa
4213421:4231
(?m)^\s*//.*$ 分行匹配
// fsafas
// gdafeawfa
// fewafgewa
// fewafesafsafseafase
回朔 替换
(\w+[\w\.]*@[\w\.]+\.\w+) 查询
<a href="mailto:$1">$1</a> 替换
<a href="mailto:
[email protected]">
[email protected]</a>.
<a href="mailto:
[email protected]"</a>
[email protected]
[email protected]
小写转大写
(<[hH]1>)(.+)(</[hH]1>) 查询
$1\U$2\E$3 替换
fsafsafsafsaegdrfsa
fsdafsad<h1>\Ufsdafsa\E</h1>fsafsda
fsafsagasfdsafsdaffsafsad
前后查找(?<=<[Tt][iI][Tt][Ll][Ee]>).*(?=</[tT][iI][Tt][Ll][Ee]>)
前.+(?=:)
后(?<=:).*
<a href="mailto:http://fsda.fsa">http://fsda.fsa</a>
<a href="mailto:http://fsaef.wfesafs">http://fsaef.wfesafs</a>
<title>fsafsa</title>
取非\d+(?!:)
423:4231421
fas:fsda
423:4231
(\b\d{5}(?(?=:):\d{4}|\b))
嵌入条件 \d{5}(?(?=:):\d{4}))
\b\d{5}((?=:):\d{4}|(\s))
11111
22222
33333:
44444:4444
HTML注释查询<!-{2,}.*?-{2,}>
<!--fsaefjsafeaskgjrsdklajfsealkjf-->
<!--fsaefjsafeaskgjrsdklajfsealkjf-->
<!--fsaefjsafeaskgjrsdklajfsealkjf-->
<!--fsaefjsafeaskgjrsdklajfsealkjf-->
<!--fsaefjsafeaskgjrsdklajfsealkjf-->
JavaScript注释查询 //.*
<script language="javascript">
//fsdafsaefseafesa
//fsdafsaefseafesa
//fsdafsaefseafesa
//fsdafsaefseafesa
</script>