正则表达式 是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在很多文本编辑器中,正则表达式通常被用来检索、替换符合某个模式的文本。
前端中正则表达式有很多应用如:
- 验证邮箱,
- 身份证号,
- 密码强度
- QQ号码
内容形式 | 含义 | 示例 |
---|---|---|
n? | 指定字符出现0次或1次 | |
n* | 指定字符出现0次或多次 | |
n+ | 指定字符出现1到多次 | |
n{x} | 指定出现的确切字数 | h{3} |
n{x,y} | 指定出现的次数>=x且<=y | ab{2,4} |
n{x,} | 指定出现的次数>=x | |
[abcd] | 匹配多个之一 | |
[^abcd] | 不允许出现多个之一 | |
[0-9] | 相当于[0123456789] | |
[a-z] | 匹配任意一个小写字母 | |
[A-Z] | 匹配任意一个大写字母 | |
[A-z] | 匹配任意大小写字母,以及[ \ ] ^ _ ` | |
[A-Za-z] | 匹配任意一个大小写字母 | |
表达式1|表达式2 | 匹配两个表达式其中之一 | 注意:[]只匹配一个字符;而|匹配是一个完整的表达式 |
(表达式) | 使用()创建一个子表达式/表达式小分组。注意:每个()创建的分组会自动分配一个从1开始的编号,在正则表达式中想引用某个分组的值使用“\编号”,在正则表达式的外部想引用某个分组的值使用“$编号” | /(ab)(cd)(ef)/分组ab的编号为1,分组ef的编号为3 |
\d | 匹配任意一个数字(decimal) | /\d/ <=> /[0-9]/ |
\D | 匹配任意一个非数字字符 | /\D/ <=> /[^0-9]/ |
\w | 匹配任意一个单词字符(word),如大小写字母、数字、_ | /\w/ <=> /[a-zA-Z0-9_]/ |
\W | 匹配任意一个非单词字符 | /\W/ <=> /[^a-zA-Z0-9_]/ |
\s | 匹配任意个空白字符(space) | /\s/ <=> /[ \n\t\r]/ |
\S | 匹配任意个非空白字符 | /\S/ <=> /[^ \n\t\r]/ |
. | 匹配除了换行和回车之外的任意一个字符 | /./ <=> /[^\n\r]/ |
上面的匹配符都是“字符匹配符”
下面的匹配符都是“位置匹配符”,匹配字符串中的特定位置
内容形式 | 含义 | 示例 |
---|---|---|
^ | 匹配字符串的开头 | /^a/ |
$ | 匹配字符串的结尾 | /a$/ |
\b | 匹配单词的边界(boundary) | /\bis\b/ |
\B | 匹配非单词边界 | /\Bis\b/ |
?=x | 匹配后面紧跟指定字符x的字符串,注意:匹配的结果中不包x | /do(?=not)/ |
?!x | 匹配后面没有紧跟指定字符x | /do(?!not)/ |
正则表达式的定义:
- (1)var patt1 = /表达式/特性;
- (2)var patt2 = new RegExp(‘表达式’, ‘特性’);
正则表达式的使用:
- (1) patt.test( str ); //用正则表达式对象检索字符串对象
- (2) str.replace( patt ); //调用String的方法,把正则表达式对象作参数
正则表达式中的特性修饰符:
var regexp = /表达式/特性修饰符 ;
特性修饰符可以取下列的一个或多个:
(1)i ignoreCase,匹配时忽略大小写
(2)g global,全局匹配,默认情况下所有的匹配仅进行一次;若声明了全局匹配,则可以把所有的匹配情形全部找出来
(3)m multiline,执行多行匹配,m只对^和
若声明了m: ^可以匹配每一行的开头;$匹配每一行的结尾