正则表达式是一种语法规则,包括普通字符和特殊字符(如_,等,他们称为元字符)。
一、常用的正则表达式
姓名:/^[\u4e00-\u9fa5]{2,4}$/
身份证:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
身份证(18位): /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
身份证(15位):/^[1-9]\d{5}\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$/
手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
二、语法
- []:表示可以匹配一组可能出现的字符,如果我们想匹配一串手机号,如下图所示:直接将可能出现的字符写在[]中即可。但是这个有一个弊端,假设我们要匹配英文字符,26个字母全部写出来就会显得很繁琐
- [-]:表示区间,比如[0-9],表示0-9之间的所有数字,[a-z]表示a-z之间的所有小写字母,[A-Z]表示所有的大写字母,如下图所示:表示所有的字母
- /:表示转义符,在上文中-表示区间,但是当我们想要匹配-时,这时候就需要转义,如下图所示,我们通过转义符即可匹配[]和-
- [^]:表示取反,当我们不想匹配某些字符时,就需要取反,比如我们不想要数字,如下图所示:
三、快捷方式
- \s:表示匹配空白
- \S:表示所有的非空白
- \d:表示匹配数字
- \D:表示所有的非数字
- \w:表示任意字符
- \W:表示所有的非字符
- \b:匹配单词边界
- ^:表示所有的开头,与取反那个有所不同,取反是放在区间内,二开头是放在区间外,如下图所示,a可以匹配开头的a,但是结尾的a就不能匹配
- $:表示结尾,如下图所示:这时候我们加了一个美元符号,开头的a就不能匹配了,而是匹配结尾的a
- .:表示任意字符,如下图所示:表示的是以as结尾的任意字符
- ?:表示可选字符,也就是可以出现也不可以出现,如下图所示,在e后面加了?后,便可以匹配one,也可以匹配on
四、重复
以上都是单次出现的,现在我们来了解下可重复出现的情况
- {N}:表示可以重复出现的次数,如下图所示,我在\d后面加上{2}表示匹配两次,而后面一个没有加的则表示匹配一次
- {M,N}:表示重复区间,如下图所示,{2,4}表示可以匹配2-4次
- {M,}:表示开闭区间,表示可以匹配M个或者无数个,如下图所示:表示可以匹配3次或者3次以上
- +:等价于{1,},表示匹配一次或者多次,如下图,零次的时候不可匹配
- *:等价于{0,},表示匹配零次或者无数次,如下图,零次的时候可匹配