1. 前瞻:?=

exp1(?=exp2):查找exp2前面的exp1
例如:博客园 顾客 博客 客园
表达式:客(?=园)
结果:客 客

例如:23a
表达式:\d+(?=.*[a-z])
结果:23

2.后顾:?<=

(?<=exp2)exp1:查找exp2后面的exp1
例如:博客园 顾客 博客 客园
表达式:(?<=博)客
结果:客 客

例如:中国a23
表达式:(?<=.*[a-z])\d+
结果:23

3.负前瞻: ?!

exp1(?!exp2):查找前面不是exp2的exp1
例如:博客园 顾客 博客园 客园 
表达式:客(?!园)
结果:客

4. 负后顾:?<!

(?<!exp2)exp1 查找后面不是exp2的exp1
例如:博客园 顾客 博客 博客园  
表达式:(?<!博)客
结果:客

5. \s+

一个或多个空格

6.^

以xxx 开始

7.[^ ]

不包含xxx;匹配未包含的任意字符
例如:plain
表达式:[^abc]
结果: plin

8. .*

.   匹配除缓缓\n外的任意单个字符
*   匹配任意数量的任何字符
.*  只要前方有符合.之后表达式,就会一直匹配下去
.*?只要匹配到.之后的表达式一次,就结束

9.捕获和非捕获

捕获:匹配当前exp表达式,获取并产生Matches 组合。常用方法:/(exp)/
非捕获:匹配当前exp表达式,不产生新组合,不输出,不破坏字符串完整性。常用方法:/(?:exp)/

例如:begin 123.456 end
表达式:\d+(?:\.\d+)
输出: 123.456

例如:/(a)(1)(A)\1\2/g ===> a1Aa1

  /(a)(?:1)(A)\1\2/g ====>a1AaA