Regex中是否有一组javascript或任何其他语言的组

时间:2011-07-28 01:56:23

标签: javascript regex

我只是在javascript中使用字符串的原生替换方法。是否有任何类似团体的事情。如果不是,如何在字符串中排序组,其中组封装其他打开和关闭的括号(潜在组)。例如,

var string = "my name is name that is named man".replace(/((name)|(is)|(man))/g, "$1");

该小组将引用1美元,2美元,3美元和4美元。我已经在我的本地计算机上尝试过它(在firebug上),但它给了我无法理解的结果。对此的明确解释将不胜感激!!

2 个答案:

答案 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。