资源描述
详解JavaScript正则表达式之分组匹配及反向引用_ 这篇文章主要介绍了详解JavaScript正则表达式之分组匹配及反向引用 的相关资料,需要的伴侣可以参考下 语法 元字符:(pattern)作用:用于反复匹配的分组 属性$1$9假如它(们)存在,用于得到对应分组中匹配到的子串 1或$1用于匹配第一个分组中的内容 2或$2用于匹配第一个分组中的内容 . 9或$9用于匹配第一个分组中的内容 用法示例 var reg = /(A+)(B|C|D)+)(E+)/gi;/该正则表达式有4个分组 /对应关系 /RegExp.$1 - (A+) /RegExp.$2 - (B|C|D)+) /RegExp.$3 - (B|C|D) /RegExp.$4 - (E+) 以上的代码也同时给出了$1$9的用法 $1$9是正则表达式预定义的静态属性,通过RegExp.$1引用 分组嵌套关系说明 上述代码也可以说明分组的嵌套关系 /测试环境 Chrome扫瞄器 var str = ABCDE; var reg = /(A+)(B|C|D)+)(E+)/gi; str.match(reg);/输出:ABCDE reg.exec(str,i);/输出:ABCDE, A, BCD, D, E RegExp.$1;/输出:A RegExp.$2;/输出:BCD RegExp.$3;/输出:D RegExp.$4;/输出:E 这样就可以很明白的看出分组的嵌套关系了 总结来说:大的分组中存在小的分组时,小的分组是排在该大分组后面的分组,以此类推 其次部分 这部分主要讲解类似于1这个东西的用法 分组匹配之反向引用 语法 元字符 19作用:用来表示前面以匹配的字符或分组的一个引用 用法示例 上面说的可能有些拗口,下面给一个例子: /一般状况,当我们想匹配任意两个相同的字符(简单一点就是两个相同的分组)时,往往可以借助下面的写法 /说明: /(w)用来匹配任何除了换行和制表符的字符, 而1是对(w)的一个引用, 所以你可以理解成: (w)1 就是(w)(w) /但是, /(w)1 和 (w)(w)的不同之处在于, (w)(w)表示任意两个连续的字符, 比如Ac, MM, K9, 都可以, / 但(w)1只能是AA, CC, 99 这样连续相同的字符 /所以, 你可以这样理解, 1 是对(w)的一个实例化引用, 当(w) 匹配到A时, 1 被表达成A, 当(w)匹配9时, 1 被表示成9 /说了这么多, 可能有些废话, 下面这个例子就很好理解了 var str = AA Am 99; var reg = /(w)1/g; str.match(reg);/输出: AA, 99 所以, 参照上边我所引用的文章中给出的 关键字搜索高亮显示的正则表达用法 的例子, 我给出自己改进的小的DEMO 虽然这个DEMO没有用到任何的关于反向引用的学问点:_: /测试环境 Chrome扫瞄器 var key = keywords;/搜索的关键字 var text = I am a text, and I have a keywords before this;/待匹配的文本 var reg = new RegExp(+key+),g); text.replace(reg,span style=color:red$1/span);/输出: I am a text, and I have a span style=color:redkeywords/span before this 下面给大家具体介绍下正则表达式之反向引用 示例1: public static void main(String args) String s=99-3933; boolean b=Pattern.matches(d)1-(3)122, s); System.out.println(b); 反向引用,匹配重复的数字 (d)=1 (3)=2 示例2: public class test public static void main(String args) String s=99-393399-3933; boolean b=Pattern.matches(d)2-(3)232)1, s); System.out.println(b); .
展开阅读全文