正则表达电话号码(一)(1000则)
前言
我整理的1000则,正则表达式,方便一起交流。
正文
假如我们要匹配一窜电话号码,比如说:
707-827-7019
我们该如何匹配它?
首先,我们确定,我们输入:707-827-7019
那么肯定是可以匹配的。
接下来:我们发现只有数字和-字符。
那么[0-9]{3}-[0-9]{3}-[0-9]{4}
像上面这样匹配。
接下成了[0-9]{3}.[0-9]{3}.[0-9]{4}
联想到[0-9] 就是\d,\d是数字的意思。
-其实是一个非数字,那么可以用/D来表示非数字啊。
成了下面这样:\d{3}\D\d{3}\D\d{4}
然后发现/d{3} 与/d{3} 重复了,这就肯定有优化手段的。
^(\d{3}[.-]?){2}\d{4}$ 这样就解决了重复。我在这里把\D换成了[.-]这是因为,这样更加精确。[.-]?>\d>.。同样我在前面和后面添加了^与$,分别代表以什么开头,
和以什么结尾,添加限制。
同样这上面考虑到的是带区号的,但是我们依然要考虑下面这两种:
(707)827-7019
827-7019
有些人写电话号码,不写区号,或者说人家的区号是写括弧的。
那么要兼容啊。
^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}
总结
正则在于一个先松后紧,然后松的过程。
先匹配出来,然后在一个例子上添加条件,最后更加匹配多个例子,然后放松条件。