[] 和 () 之间的正则表达式差异

Regular Expression differences between [] and ()

如何理解这个Pattern?

/^((?:\+?61)|0)(2((3[3789])|(4[0123456789])|(5[012356789])|
(6[0123456789])|[789][0-9])|(3((3[234])|(4[012345789])|(5[0123456789])|
(6[123457])|[789][0-9]))|(7(([23][0-9]|(4[0123456789]))|(5[234567])|
(7[679])))|(8((2[56])|(5[123458])|(6[0123456789])|(7[0123456789])|
(8[0123456789])|(9[0123456789]))))[0-9]{6}$/

square bracket[]Parenthesis()有何不同?

[]表示一个字符class。 () 表示捕获组。

[a-z0-9] -- a-z0-9

范围内的一个字符

(a-z0-9) -- 显式捕获 a-z0-9。没有范围。

a -- 可以被[a-z0-9].

捕获

a-z0-9 -- 可以被 (a-z0-9) 捕获,然后可以在表达式后面的替换 and/or 中引用。