任何人都可以向我解释这两种正则表达式方法之间的区别:
/(\d)\1/
/(\d){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位数或更多。最后一位数字将在一个组中捕获。每个数字都是独立匹配的,它们不必相同。