正则验证手机号和座机

求一正则验证手机号和座机,其中座机可带区号或不带区号的8位或7位

 ^(\d{2,4}-)?\d{7,8}$   座机
^1\d{10}$  手机

非vb要注意反斜杠\字符串转义。

 str.matches("^(\\d{2,4}-)?\\d{7,8}$")

 str.matches("^1\\d{10}$ ")

^(\d{3,4}-)\d{7,8}$座机
^1[3|4|5|7|8][0-9]\d{8}$手机