我的正则表达式学习笔记

时间:2021-11-03 09:42:45

正则表达式 是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在很多文本编辑器中,正则表达式通常被用来检索、替换符合某个模式的文本。
前端中正则表达式有很多应用如:
- 验证邮箱,
- 身份证号,
- 密码强度
- 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: ^可以匹配每一行的开头;$匹配每一行的结尾