我只是在javascript中使用字符串的原生替换方法。是否有任何类似团体的事情。如果不是,如何在字符串中排序组,其中组封装其他打开和关闭的括号(潜在组)。例如,
var string = "my name is name that is named man".replace(/((name)|(is)|(man))/g, "$1");
该小组将引用1美元,2美元,3美元和4美元。我已经在我的本地计算机上尝试过它(在firebug上),但它给了我无法理解的结果。对此的明确解释将不胜感激!!
答案 0 :(得分:3)
在某些语言中,您可以指定一个标志来说明您希望组所在的顺序。在Javascript中,您无法指定它。它们将按照左括号出现的顺序排列。 因此,在上面的示例中,组将按顺序排列:
1)((name)|(is)|(man))
2)(name)
3)(is)
4)(man)
要从上面的字符串中更清楚地看到输出,请执行:
"my name is name that is named man".replace(/((name)|(is)|(man))/g, '1($1) 2($2) 3($3) 4($4)\n');
然后,您可以清楚地看到每个匹配时每个组中的内容:
"my 1(name) 2(name) 3() 4()
1(is) 2() 3(is) 4()
1(name) 2(name) 3() 4()
that 1(is) 2() 3(is) 4()
1(name) 2(name) 3() 4()
d 1(man) 2() 3() 4(man)"
当达到第一个匹配时,您可以看到匹配组2 (name)
的字符串也匹配组1。第3组和第4组没有任何匹配。每场比赛都一样。在这种情况下,因为第一组包装了它将始终包含整个匹配的所有内容,并且因为内部部分是or
,所以这三个组中只有一个将在每个匹配中包含任何文本。
答案 1 :(得分:0)
http://www.regular-expressions.info/brackets.html
嵌套引用是它引用的捕获组内的反向引用,例如(\ 1two |(之一))+。这个正则表达式将提供与支持前向引用的flavor相同的行为。 某些不支持前向引用的flavor确实支持嵌套引用。这包括JavaScript。