正则表达式
应用:
1.表单中,对用户输入的信息进行格式的校验。比如,用户名,密码,手机号是否符合规范。
2.从字符串中获取一部分符合规则的内容。
创建正则对象的方式
1.通过new 去创建一个正则对象。
第一个参数:正则表达式的主体,字符串
第二个参数:修饰符 /i:忽略大小写 /g全局匹配
<script>
var reg = new RegExp("abc");
console.log(reg);
</script>
2.通过字面量的方式创建
变量 = /正则的主体/修饰符 ;
<script>
var reg = /abc/;
console.log(reg);
</script>
正则的方法
test()
用于检测一个字符串是否匹配某个模式.
格式:正则对象.test(字符串)
作用:匹配这个字符串中是否有符合正则的内容。
返回值:布尔值。匹配成功返回true,否则返回false。
exec()
(了解即可)
格式:正则对象.exec(字符串)
作用:匹配字符串中是否有符合正则的内容,将其返回。
返回值:匹配成功返回一个数组,匹配失败返回null。
字符串的一些方法中使用正则:
match()
格式:字符串.match(正则)
功能:匹配符合正则规则的字符串。
返回值:匹配成功返回数组,匹配失败返回null
split()
格式:字符串.split(字符/正则)
功能:按照指定的规则分割字符串
返回:数组,分割成功,返回分割好的数组,分割失败,返回一个只包含自身的数组。
replace()
格式:字符串.replace(旧字符/正则,新字符))
功能:按照指定的规则替换字符串
元字符
组成正则的基本符号,在正则中有特殊的含义。
[范围]:匹配范围内的单个字符
[0-9]:匹配0-9
[a-z]:匹配小写的26个字母
[A-Z]:匹配大写的26个字母
[a-zA-Z]:匹配26个字母,不论大小写。
[^范围] 匹配任意一个除范围内的字符。 相当于对[范围]的取反
\w 匹配单个的数字,字母,下划线。基本上等价于 [a-zA-Z0-9_]
\W 匹配单个的非字母,非数字,非下划线的字符。相当于\w的取反。 注意,取反不是对结果的取反,是对匹配内容的取反。
\d:匹配单个数字 相当于[0-9]
\D:匹配单个非数字 相当于[^0-9]
\s 匹配空白字符(空格,换行)
\S 匹配非空白字符
. 匹配任意字符
$ 匹配行尾 a$:字符串以a结束
^ 匹配行首 ^a:字符串以a开头
限定符
a* a匹配0次或多次
a+ a匹配1次或多次
a? a匹配0次或1次
a{m,n} a至少匹配m次最多匹配n次
a{m,}a匹配m次以上
a{m}a匹配m次
元字符,限定符修饰的只是单个字符。
如果想要修饰一个整体,就将其使用小括号包括起来。
或运算符
(m|n) 匹配m或者匹配n
贪婪模式
当正则去匹配内容时,会尽可能多的去匹配。
贪婪模式只需要在限定符后面添加一个?,就会变成非贪婪模式。
- 出现1次或多次
分组
添加小括号就可以实现分组
exec返回的是一个数组,第一个元素是整体的一个返回值,从后面的元素是按照小括号的顺序一一返回的。
断言
正向先行断言
格式:(?=表达式) 表示所在位置右侧必须是表达式的内容,但是不会匹配表达式的内容。
(eg:喜欢(?=你) 只匹配喜欢两个字,但是喜欢右边必须是你,但是又不能匹配你。)
反向先行断言
格式:(?!表达式) 表示所在位置右侧不能是表达式的内容,但是不会匹配表达式的内容。
(eg:喜欢(?!你) 只匹配喜欢两个字,但是喜欢右边不能是你)
向后行断言
格式:(?<=表达式) 表示所在位置左侧必须是表达式的内容,但是不会匹配表达式的内容。
反向后行断言
格式:(?<!表达式) 表示所在位置左侧不能是表达式的内容