?:匹配前面的字符0次或1次。
*:匹配前面的字符0次或多次。
+:匹配前面的字符1次或多次。
. :匹配除’\n’之外的任何单个字符。使用[.\n]匹配包括\n的任何字符。
{n}表示n个字符,用{n,m}表示n~m个字符。
:将特殊字符转义。
A|B可以匹配A或B,所以(P|p)ython可以匹配’Python’或者’python’。
^:表示行的开头。
^\d:表示必须以数字开头。
$:表示行的结束。
\d$:表示必须以数字结束。
\d{3}表示匹配3个数字,例如'010'
\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配 '空格','空格空格','空格空格空格'等;
\d{3,8}表示3-8个数字,例如'1234567','123','12345'
综上,该正则表达式可以匹配以任意个空格隔开的带三位区号的电话号码4
要匹配'010-12345'这样的号码,由于'-'是特殊字符,要用'\'转义,所以可用\d{3}\-\d{3,8}进行匹配。