正则表达式中继器和子匹配重复之间的区别

时间:2011-07-11 10:31:55

标签: javascript regex

任何人都可以向我解释这两种正则表达式方法之间的区别:

/(\d)\1/
/(\d){2,}/

据我所知,它们都匹配至少一次子表达式的重现。事实上,如果他们做同样的事情,是否存在区分他们的性能问题?

2 个答案:

答案 0 :(得分:4)

不,他们不做同样的事情

/(\d)\1/

匹配

  

11和22 and 33

使用括号将匹配的数字放在捕获组中并使用\1访问该变量,因此您可以连续匹配两个相等的数字。

/(\d){2,}/

匹配

  

12和22以及123456789和22222222

在这里,您要说一行中匹配两个或更多({2,})个数字。这可以是不同的数字。

答案 1 :(得分:4)

  • /(\d)\1/ - 匹配一个数字,在第1组中捕获它,然后使用back references再次匹配相同数字
  • /(\d){2,}/ - 匹配2位数或更多。最后一位数字将在一个组中捕获。每个数字都是独立匹配的,它们不必相同。