前言:
我个人学习巩固正则的期间,搜集了一些在工作中,出现频率比较高的正则表达式,希望在自己巩固的同时,也能帮到别人。
1. 手机号码
思路:国内的手机号码第一位通常是 数字1开头,第二位,通常是3,4,5,6,7,8,而后面的9位,是数字混合组合的,可以随意搭配,所以我们在考虑的时候,首先考虑第一位和第二位 ,如下:
- 国内第一位通常是数字1,[1]
- 第二位通常是[3,4,5,6,7,8]
- 后面的九位可随意搭配数字,但只能有9位\d{9}
表达式:/^[1][3,4,5,6,7]\d{9}$/
2. 邮箱
以下是常见邮箱的整理
在写邮箱的需求的时候,通常不同需求会对应不同的邮箱,有手机号码,有英文字符例如:
- 手机号码邮箱:133xxxx1232@163.com
- qq邮箱: 184xxxx342@qq.com
- 139移动邮箱:166xxxx2345@139.com
- 搜狐邮箱: rebecca_unshine@sohu.com
- 新浪邮箱: 132_reca@sina.cn
思路: 在匹配邮箱的时候,考虑到邮箱的特点,它有一个@ 有一个. 那我们根据这两个特点,将邮箱分成三部分
- @前面的部分为第一部分,可以为数字,可以有英文字符,可以有下划线
- @后面的,也就是第二部分,通常这部分可以是英文字符可以是数字,通常最多为6位字符
- .后面为第三部分,通常为两位或者三位的英文字符,例如com或.cn
表达式: /^\w+@[\da-z]{2,6}+\.[a-z]{2,3}$/
或者可以根据自己需求把后面具体成需要的内容,比如:.cn、.com、.net
/^\w+@[\da-z]{2,6}+\.[cn|com|net]{2,3}$/
\w:可以为英文、数字或者_
+:限定符加号指出现一次以上
a-z:表示所有小写英文字符
0-9:表示所有数字
{2,4}:表示要求几位字符,这里是 2-4的范围
3. IP
思路:
- 首先考虑IP是由4段组成的,中间分别用句点.隔开
- IP地址的数值是在0-255之前的任意数字
- 先考虑第一段的数值:
- 如果第一段的前两个数字是25,那么它的第三份数字就是[0-5],也就是0-5之间
- 如果第一段的第一位数值为2,那么第二顺位就是[0-4],第三位则可以是任意一位数字
- 如果第一位为01的话,后面两顺位,可以为任意数字\d
- {3}将第一段数值,重复三遍
- 第四段数值,将第一段的复制过来直接用节课
- ?是限定字符代表的是它前面的字符出现0次或者1次
故:表达式为
/^\b((25[0-5]|2[0-4]\d|[01]?\d\d?).){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b$/
4. 域名匹配
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。由多个标号组成的完整域名总共不超过255个字符
/(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*/
5. 身份证号码
身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
思路:
- 第一个要考虑的情况,将15位和18位的全数字写出匹配表达式\d{15} \d{18},用“或”|运算符连接
- 考虑18位最后一个可能是X,意味着前17位是数字,最后一位是X,\d{17}X
- 在三种情况的开头均加上^尖号,目的是匹配开头为数字的字符,结尾以$美元符进行行尾匹配,要么为数值要么为X
表达式为:
/\b(^\d{15}$)|(^\d{18}$)|(^\d{17}X$)\b/