test和exxec方法:


正则表达式方法:
RegExp.prototype.test(str)
用于测试字符串参数中是否存在匹配正则表达式模式的字符串
RegExp.prototype.exec(str)
使用正则表达式模式对字符串执行搜索,并更新全局RegExp对象的属性以反应匹配结果
如果没有匹配的文本则返回null,否则返回一个结果数组
test(str): 检验是否存在匹配的字符串,找到一个就返回true,并不再往后找了,没找到就返回false。对正则对象无影响。
exec(str): 搜索匹配的字符串,最后返回一个数组(每一个元素里包括匹配文本,第一个字表达式匹配文本,第二个子表达式匹配文本。。。。),没找到则返回null。每匹配一次就更新正则对象属性(index:匹配文本的第一个字符的下标, input:被匹配的字符串)
非全局:lastIndex被忽略,永远从第一个字符开始检查
全局:拥有lastIndex,并在每一次搜索会发生改变。当匹配字符串的最后一个字符是整个字符串的最后一个时,lastIndex会成为0,这就是全局的test为什么出现false的原因。
exec 里 获取 匹配的位置 和匹配的分组
excel 的视频 可以 再多看一次
正则表达式的 lastIndex 的具体 示例
正在表达式的 test 方法 返回值是 true 或者 false
exec方法的具体使用.
RegExp.protptype.exec(str) 方法:
注意 如果匹配成功则返回一个对象
测试的时候 每次都写一边正则表达式的字面量 相当于每次都重新开辟一块内存(相当于new RegExp <- 我的理解)
test方法在正则表达式有'g'(全局)标志时 会有与不加'g'不同的反应
具体表现在 记录正则匹配上次匹配到的位置(这应该就是正则表达式的lastIndex属性的意义把[不确定2020/08/22]
正则表达式的方法:
话说我原来一听到'正则表达式' 就犯困.
test() 返回true | false
var reg=/\w/;
reg.test('ab')
连续输入 true ture false true true false
lastIndex做怪 (这里判断第三次false)
whille(reg.test(a)){
console.log(res.lastIndex)
}
//这里只返回2次,都是true
exec
lastIndex 不会有上面的问题
示例还是很有用的
exec(str)
非全局调用
RegExp.prototype.test(str):用于测试字符串参数中是否存在匹配正则表达式模式的字符串,存在返回true,否则返回false
var reg2=/\w/g;
进行reg2.test('ab')时,第三次会变成false
原因:while(reg2.test('ab')){
console.log(reg2.lastIndex);
}
即进行test时,正则表达式的lastIndex会发生变化
输出:1 2 表示第一个匹配上了、第二个匹配上了
RegExp.prototype.exec(str):使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果
如果没有匹配则返回null,否则返回一个结果数组:index声明匹配文本的第一个字符的位置,input存放被检索的字符串string
非全局调用:
调用非全局的RegExp对象的exec()时,返回数组
第一个元素是与正则表达式相匹配的文本
第二个元素是与RegExpObject的第一个子表达式(分组)相匹配的文本
第三个元素是与RegExp对象的第二个子表达式(分组)相匹配的文本
以此类推
test/exec方法



是是是试试所所所所所所

exec() 返回一个数组
[匹配的内容, 分组1, 分组2, ......]
lastIndex 仅作用于全局搜索 /g