目录
一、基础
说明:规定下次匹配的起始位置,起始下标从0开始(上次匹配文本之后的第一个字符的位置)
特点:可读可写(即允许修改)
值:整数,默认为0
语法:RegExpObj.lastIndex
二、生效条件
全局模式(非全局模式下lastIndex固定为0)
使用exec()或test()
匹配成功 lastIndex = 下次匹配的起始位置(上次匹配文本之后的第一个字符的位置)
匹配失败 lastIndex = 0
三、示例
示例1(非全局模式):
var s1 = "Java"; //测试字符串
var s2 = "Hello JavaScript"; //测试字符串
var r = /Java/; //匹配模式
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
执行结果:
说明:非全局模式lastIndex固定为0,不受影响
示例2(全局模式):
var s1 = "Java"; //测试字符串
var s2 = "PHP"; //测试字符串
var r = /\w/g; //匹配模式
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2));
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2) +" 字符:"+ RegExp.lastMatch);
执行结果:
解析:
示例3(全局模式):
var s1 = "Java"; //测试字符串
var s2 = "Hello JavaScript"; //测试字符串
var r = /Java/g; //匹配模式
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2) +" 字符:"+ RegExp.lastMatch);
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s2+" 匹配结果:"+r.test(s2));
console.log("匹配起始下标:"+r.lastIndex+" 匹配字符串"+s1+" 匹配结果:"+r.test(s1) +" 字符:"+ RegExp.lastMatch);
执行结果:
解析:
四、其他
如果匹配规则使用了边界元字符 ^(匹配开头),匹配前lastIndex必须为0,否则一定匹配失败(自己测出的结果)