定义:正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
1、学习正则表达式的目的
为了更加方便高效的处理字符串,比如密码强度的校验,银行卡号、邮箱等等
2、创建正则表达式
字面量的方法:
var reg = /\d/g
通过new关键字实例化
var reg = new RegExp('\\d');
区别:字面量创建方式不能进行字符串拼接,实例创建方式可以,字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义
元字符:相当于代表某类型字符串的占位符
\d | 0-9之间的任意一个数字 |
\D | 除了\d |
\w | 数字,字母 ,下划线 0-9 a-z A-Z _ |
\W | 除了\w |
\s | 空格 |
\S | 除了\s |
\n | 匹配换行符 |
. | 匹配除了\n |
\ | 转义字符 |
| | 或 |
() | 子表达式,分组 |
\b | 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数 |
^ | 匹配开始,匹配后面的一个字符或一个子表达式 |
$ | 匹配结束,匹配前面的一个字符或一个子表达式 |
[a-z] | []匹配范围,占一个,匹配a-z |
[^a-z] | 匹配非a-z,[]中的^表示非 |
[qwe] | 匹配qwe三个字符中的任意一个 |
量词:用来修饰元字符,出现在元字符后面 如\d+,限定出现在前面的元字符的次数
* :匹配0到多个
+:匹配1到多个
?:0次或1次
{n}:匹配n次
{n,}:匹配n或以上次
{n,m}:匹配n到m次
注意:一般[]中的字符没有特殊含义,.就表示.,+就表示+,但是\w,\d等还是有特殊含义
正则断言:
- (?=exp) 零宽正向先行断言
- (?!exp) 零宽负向先行断言
- (?<=exp) 零宽正向后行断言
- (?<!exp) 零宽负向后行断言
如同^代表开头,$代表结尾,\b代表单词边界一样,先行断言和后行断言也有类似的作用,它们只匹配某些位置,在匹配过程中,不占用字符,所以被称为“零宽”。所谓位置,是指字符串中(每行)第一个字符的左边、最后一个字符的右边以及相邻字符的中间。
(?=exp) 零宽正向先行断言:表示字符串中的一个位置,紧接该位置之后的字符串能够匹配表达式exp
(?!exp) 零宽负向先行断言:表示字符串中的一个位置,紧接该位置之后的字符串不能匹配表达式exp
(?<=exp) 零宽正向后行断言:表示字符串的一个位置,紧接该位置之前的字符串能够匹配表达式exp
(?<!exp) 零宽负向后行断言:表示字符串的一个位置,紧接该位置之前的字符串不能够匹配表达式exp