[] 和 () 之间的正则表达式差异
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-z
或 0-9
范围内的一个字符
(a-z0-9)
-- 显式捕获 a-z0-9。没有范围。
a
-- 可以被[a-z0-9]
.
捕获
a-z0-9
-- 可以被 (a-z0-9) 捕获,然后可以在表达式后面的替换 and/or 中引用。
如何理解这个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-z
或 0-9
(a-z0-9)
-- 显式捕获 a-z0-9。没有范围。
a
-- 可以被[a-z0-9]
.
a-z0-9
-- 可以被 (a-z0-9) 捕获,然后可以在表达式后面的替换 and/or 中引用。