正则
正则:就是一种规则,用于检验字符串的格式,目标就是字符串,
只要是表单提交的数据都是字符串
正则的定义:
(1)、var reg=new RegExp()
(2)、var reg=/ 格式 /
正则定义的区别:
前者里面不能引用变量,后者可以
正则的方法:
正则有两大功能:
一个就是test():用于匹配,匹配成功就是true
一个就是exec():用于捕获,如果有就拿出来,没有就是null,返回的是数组
正则的修饰符:
(1)、i 代表不区分大小写
(2)、g 代表全局匹配
(3)、m 代表多行匹配
与正则相关的字符串的方法:
match():查找一个或多个与正则相匹配的,有,返回的就是查找的结果,没有就是null;
search():匹配和正则相同的字符,有,返回索引,没有就是-1
replace():匹配与正则相同的字符,并替换掉,返回的是替换后的字符串,没匹配就是原来的
正则的方括号:
[abc] 查找方括号中的任何字符
[^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从0到9的数字
[a-z] 查找任何小写a到小写z的字符
[A-Z] 查找任何大写A到大写Z的字符
[A-z] 查找任何大写A到小写z的字符
[red | blue | green] 查找任何指定的选项,(查找时将red当做一个整体来查)
元字符:
. 代表单个字符
w 代表单词字符 (单词字符:数字、字母、下划线)
W 代表非单词字符
d 代表数字
D 代表非数字
s 代表空白字符
S 代表非空白字符
代表单词边界
B 代表非单词边界
量词
n+ 代表至少1个n的字符
n* 代表0个或多个n
n? 代表包含0个或1个n
n{x} 代表x个n
n{x, } 代表包含至少x个n
n{x,y} 代表包含大于等于x个小于等于y个n
n$ 代表包含以n结尾的字符串
^n 代表以n开头的字符串
?=n 代表指定字符串后紧跟n的字符串
正则的理解:
正则的贪婪性:
每一次匹配都是按最长的出结果,我们把这种叫做正则的贪婪性
解决正则贪婪性的方法:
在元字符量词后加?
正则的懒惰性:
每一次在exec()中,捕获的时候,只捕获第一次匹配的内容,而不往下捕获了,我们把它叫做正则的懒惰性
每一次捕获的开始位置都是0;
解决正则懒惰性的方法:
用修饰符,g(全局匹配)
分组捕获:
var reg=/ (a) (b) / 相等于大正则里面带了两个小正则
分组捕获的方法是exec()、math()
exec()和math()的区别:
exec()和math()在非全局下分组捕获是相同的,在捕获的过程中即捕获大正则里面的内容也捕获分组中的内容并返回
exec()和math()在全局下捕获是不一样的,exec()不变,但是math()只捕获大正则里的内容
分组捕获的作用:
1、改变优先级
2、分组引用
1:代表和第一个分组出现一模一样的内容
2::代表和第二个分组出现一模一样的内容
reg中的规则是第一个的是一个分组,且是一个单词字符,第二个是分组要求和第一组一模一样,第三个是第二个分组的内容,且是一个
单词字符,第四个是一个分组应用,要求和第二组一模一样;
分组捕获:
分组捕获前提是正则存在分组,不仅把大正则的内容捕获到了,也把小正则的内容捕获到了
如何解除分组捕获:
如果你不想捕获某一个分组中的内容,在这个分组的前面加上?: 就可以了