- 正则基础(基本概念):
- 精确匹配(eg: /adc/)
- 类匹配(eg: [abc],[^abc],[a-c])
- 转义(eg: \/匹配/)
- 开头与结尾(eg: ^, $)
- 重复匹配(eg: ?,+,*,{n},{n,m},{n,})
- 预定义的字符类(eg: \t,\r,\d…)
- 组(eg: (abc))
- 或(eg: a|b)
- 反向引用(eg:如下栗子)
- 消极匹配(eg: (?:))
以上加上最基础的创建正则表达式与flag标识符,即组成正则表达式的常用的基础概念。
- BackReferences反向引用;
栗子:12345要求:匹配xml格式的元素:var str='</someTag>something</someTag>';正则:/<(\w+)>(.+)<\/\1>/
如上的反斜杠后面跟一个数字,\1代表引用第一个小括号里匹配到的pattern(\w+)。即\后面跟一个从1开始的数字,分别代表第几个小括号所匹配的pattern。如果没有反向引用,如何能匹配到这种xml格式呢?
String.prototype.match(/reg/g)
match方法在正则表达式参数的标识符为g时,不会将捕获的子pattern(小括号匹配到的)返回到结果数组里,而是把所有符合整个正则表达式的字符串一一放进去,捕获(capture)到的不会出现在结果中。如果想同时实现,用循环调用RegExp的exec方法12345var str = "<div class='test'><b>Hello</b></div>";var reg = /<(\/?)(\w+)([^>]*?)/g,match;while(match=tag.exec(str) !== null){//每次匹配都可以进行捕获(capture)}(?:)消极匹配
在只是简单用组而无需捕获时(”()”小括号),尽可能的用(?:)取消对组的捕获,这样可以提高性能,减少引擎不必要的运算。
未完待添加…