1)精确匹配
如果一个字符不是特殊字符或操作符,则表示该字符必须在表达式中出现。
例如“/test/”,就表示“t”后面跟着“e”,“e”后面跟着“s”,“s”后面跟着“t”。
2)匹配一类字符
很多时候是想匹配一个有限字符集中的某一个字符。
例如“[abc]”,就是要匹配“a”、“b”或“c”中的任意一个字符。
例如“[^abc]”,就是除了“a”、“b”、“c”之外的任意字符。
例如“[a-m]”,就是从“a”到“m”之间的任意字符。
3)转义
并不是所有字符和其字符字面量都是等价的。
例如匹配“$”、“.”这种特殊字符,需要添加“\”反斜杠,“\$”、“\.”。
4)匹配开始与匹配结束
经常需要确保模式匹配一个字符串的开始,或者一个字符串的结束。
“/^test/”表示以“test”开始,“/test$/”表示以“test”结尾。
5)重复出现
1. “?”表示出现一次或不出现,例如“/t?est/”可以匹配“test”或“est”。
2. “+”表示出现一次或多次,例如“/t+est/”可以匹配“test”、“ttest”。
3. “*”表示出现零次或多次,例如“/t*est/”可以匹配“est”、“test”。
4. “{number}”表示指定出现的次数,例如“/a{4}/”可以匹配“aaaa”。
5. “{number,number}”两个数字表示重复次数区间,例如“/a{1,3}/”可以匹配“aa”、“aaa”或“aaaa”。
6. “{number,}”次数区间的第二个数字可选,表示一个开区间。例如“/a{1,}/”匹配连续2个“a”或更多的“a”。
7. 重复操作默认是贪婪匹配,如果要非贪婪(只做一次匹配)的可以在操作符后面加“?”,例如“*?”、“+?”。
6)预定义字符类
有一些字符是不可能用字面量字符来表示的(例如回车)。
还有一些经常想匹配的字符类,例如小数位数或一组空白字符。
7)分组
如果将操作符应用于一组术语,可以添加小括号。
例如“/(ab)+/”匹配一个或多个“ab”字符串。
当用括号进行分组的时候,就创建了捕获(capture)。
8)或操作符
可以用“|”表示或的关系。
例如“/a|b/”匹配“a”或“b”。
9)反向引用
在反斜杠后面加一个要引用的捕获数量,该数字从1开始,例如“\1”、“\2”。
例如“/<(\w+)>(.+)<\/\1>/”匹配“<b>strong</b>”,不用反向引用是无法做到的。
1)执行简单的捕获
match返回的第一个索引的值总是该匹配的完整结果,然后是每个后续捕获结果。
2)用全局表达式进行匹配
在进行局部匹配时,只有一个实例被匹配了,并且该匹配的捕获结果也返回了。
在进行全部匹配时,返回的是匹配结果的列表。
exec方法保存了上次调用的状态,这样每个后续调用就可以继续下去了,直到全局匹配。每一个调用返回的都是下一个匹配及其匹配内容。
match中的内容如下,这里就显示两个,其他类似的,下面的index就是当前字符串开始匹配的索引值。
3)捕获的引用
有两种方法可以引用捕获到的匹配结果:自身匹配,替换字符串。
1. 自身匹配
2.替换字符串
替换字符串“replace”方法,与反向引用不一样,这里使用“$1”、“$2”语法表示每个捕获的数字。
1. $i (i为数字) : 从左到右正则子表达式所匹配的文本。
2. $&:与正则表达式匹配的全文本。
3. $`(顿号):匹配字符串的左边文本。
4. $’(单引号):匹配字符串的右边文本。
5. $$:匹配$自己。
4)没有捕获的分组
该表达式只会为外层的括号创建捕获。
本文转自 咖啡机(K.F.J) 博客园博客,原文链接:http://www.cnblogs.com/strick/p/6048862.html,如需转载请自行联系原作者