(\d+)(.)(\d+) 我知道这样的分组,每一个分组有一个序号 \1\2\3 , \0 是整个匹配 但是如果分组里有分组,又是怎样命名的呢 比如 (\s([a-z]+)\s)\d+ 这里的 ([a-z]+) 是如何命名的,或者说我要如何取得这个分组
\1 \2用于正则表达式里面的构建,$1 $2用于捕获后,callback里面使用。(没有\0这个东西吧?忘了) 可以这样,外围不需要的分组,使用非捕获符号 ?: ,这样 $1 $2 就是你需要的捕获了。 (?:\s([a-z]+)\s)\d+ 另外 ([a-z]+) 指捕获由 a到z 组成的多个字符串,至少有一个字符;同理,捕获到了,就可以在match等方法的返回中可以找到对应的捕获。
正则的分组嵌套,个人认为,主要是理解其层级关系。 而,'\1\2\3'...,此类,就是反向引用了。 具体的你可以进入这个网址(某大神整理),耐心的看一遍,相信你会很有收获, http://blog.csdn.net/zgrkaka/... 那对于你给出的,(s([a-z]+)s)d+,其实就是两层的括号嵌套,也就只需要 \1\2 就能全部匹配出来 \1,会匹配第一个括号(分组)的内容,即,s([a-z]+)s \2,会匹配第二个括号(分组)的内容,即,[a-z]+ \1\2\3、、、,即反向引用,其规则,我现在的理解是:由左向右,有外向内 想要获取值的话,可以使用,构造函数的全局属性 $1 至 $9 来获取 var string = ' abc 123 abc abc';