捕获
- 捕获
- 语法:正则.exec(字符串)
- 1.字符串没有符合正则规则的内容
- 捕获的结果为null
- 2.正则没有小括号, 没有标识符g
- 捕获到的是一个数组,下标0是我们捕获到的值,但是不管捕获多少次,都是从下标0开始,第一个满足条件的
- 3.有小括号
- 下标0是符合正规规则的字符串
- 从下标1开始,是每个小括号单独捕获出来的内容
- 4.有标识符g
-
g叫做全局标识符
-
第二次捕获的时候,会从第一次捕获结束的位置开始进行捕获
-
直到找不到内容,会返回一个null
-
然后下一次捕获的时候,会从字符串开始重新捕获
-
- 1.字符串没有符合正则规则的内容
- 语法:正则.exec(字符串)
1.字符串没有符合正则规则的内容
var reg = /\d{3}/
console.log(reg.exec('wdwfa'))
2.正则没有小括号, 没有标识符g
var reg = /\d{3}/
console.log(reg.exec('w123d456wf789a'))
3.有小括号
var reg = /(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/
var num = '411381200401311234'
console.log(reg.exec(num))
4.有标识符g
var reg = /\d{3}/g
var str = 'w123d456wf789a'
console.log(reg.exec(str)) //[0]:123
console.log(reg.exec(str)) //[0]:456
console.log(reg.exec(str)) //[0]:789
console.log(reg.exec(str)) //null
console.log(reg.exec(str)) //[0]:123
正则的两大特性
- 正则的两大特性
- 1.懒惰
- 每次都是在下标0的位置开始捕获
- 解决:在正则后添加全局标识符g
- 2.贪婪
-
每次捕获内容的时候,尽可能的多去捕获内容
-
解决:使用非贪婪限定符 (在原有的限定符后添加一个?)
-
贪婪限定符* + ? {n,} {n,m}
-
非贪婪限定符*?
-
- 1.懒惰
var str = '<div><span></span></div>'
//贪婪捕获
var reg1 = /<div.*>/
console.log(reg1.exec(str)[0])
//非贪婪捕获
var reg2 = /<div.*?>/
console.log(reg2.exec(str)[0])