正则有些规则没有搞清楚。记录一下发现错误和修改的过程:
这是刚开始的正则表达式
var re = /^1{0,1}[\s*(]\d{3}[\s*)]\d{3}[\s*-]\d{4}$/;
问题出在哪里呢?很多,一步步来看。
1. [\s*(]
这个可不是\s
重复0次或多次的意思,而是匹配\s
*
(
中任意一个的意思。
2. 将(
)
拆开放在两个部分里,不能保证二者同时出现。
修改后
var re = /^1?\s*(\d{3}|\(\d{3}\))[\s-]*\d{3}[\s-]*\d{4}$/;
(^1?
= ^1{0,1}
)