手机版

JS中正则表达式的lastIndex属性需要注意

时间:2021-09-04 来源:互联网 编辑:宝哥软件园 浏览:

解释

本文主要讨论JavaScript中RegExp对象的属性。

解释

每个正则表达式对象包含五个属性:源、全局、忽略、多行和最后索引。

Source:是包含正则表达式文本的只读字符串。

var reg=/JAVAScript/;reg.source//返回JavaScriptglobal:是一个只读的布尔值,看看这个正则表达式有没有修饰符g。

修饰符g表示全局匹配,它检索字符串中的所有匹配项。

var str=' JavaScriptstr . match(/JAVAScript/);//只能匹配一个JavaScript var str=' JavaScript JAVAScript ';str . match(/JAVAScript/g);//可以匹配两个JavaScript var reg=/JavaScript/;reg.global//返回false var reg=/JAVAScript/g;reg.global//返回trueignoreCase:这是一个只读布尔值,用于查看此正则表达式是否有修饰符I.

修饰符I表示模式匹配不区分大小写。

var reg=/JAVAScript/;reg.ignoreCase//返回false var reg=/JAVAScript/I;reg.ignoreCase//返回true var reg=/JAVAScript/;reg . test(' JavaScript ');//返回false var reg=/JAVAScript/I;reg . test(' JavaScript ');//返回truemultiline:这是一个只读布尔值,用于查看此正则表达式是否有修饰符m。

用于在多行模式下执行匹配的修饰符m需要与$/code一起使用。code^/code和code$可以匹配每行的开头和结尾以及整个字符串。

var str=' java \ nJavaScriptstr.match(/^javascript/);//返回nullvar str=' java \ nJavaScriptstr.match(/^javascript/m);//匹配JAVAScript var reg=/JAVAScript/;reg.multiline//返回false var reg=/JAVAScript/m;reg.multiline//返回truelastIndex:它是一个可读/可写的整数。如果匹配模式有G修饰符,这个属性存储在整个字符串中下一次检索的起始位置,exec()和test()方法将使用这个属性。

exec()方法在字符串中执行匹配搜索。如果没有找到任何匹配项,它将返回null,但是如果找到匹配项,它将返回一个数组。

当调用exec()的正则表达式对象具有修饰符g时,它会将当前正则表达式对象的lastIndex属性设置为匹配子串旁边的字符位置。当同一个正则表达式第二次调用exec()时,它将从lastIndex属性指示的字符串开始搜索。如果exec()没有找到任何匹配的结果,它会将lastIndex重置为0。

这里写图片描述

Test()方法,其参数是字符串,使用test()测试字符串,如果字符串包含正则表达式的匹配结果,则返回true,否则返回false。

var str=' javavar reg=/JAVAScript/;reg . test(str);//返回falsevar str=' JavaScriptvar reg=/JAVAScript/;reg . test(str);//返回true。当调用test()的正则表达式对象具有修饰符g时,其行为与exec()相同,因为它开始从lastIndex指定的位置检索字符串。如果找到匹配的结果,它会立即将lastIndex设置为匹配子字符串旁边的字符位置。

请看下面有趣的代码

var str=' JavaScriptvar reg=/JAVAScript/g;console . log(reg . test(str));//print true console . log(reg . test(str));//Print false为什么同一个字符串和同一个正则表达式的打印方式不同?如果您已经理解了lastIndex属性,那么您必须理解为什么。

让我们看看发生了什么。什么

var str=' JavaScriptvar reg=/JAVAScript/g;console . log(reg . test(str));//print true console . log(reg . LastIndex);//print 10,因为JavaScript匹配,所以将lastIndex设置为匹配结果旁边的字符位置console . log(reg . test(str));//print false,因为字符串是从lastIndex位置检索的,没有匹配的结果console . log(reg . last index);//打印0,因为没有匹配结果,请将lastIndex重置为0。请注意,如果我们在第一次调用test()后手动将lastIndex重置为0,我们也可以在第二次调用test()后打印true

var str=' java JavaScript javavar reg=/JAVAScript/g;console . log(reg . test(str));//print true reg . LastIndex=0;console . log(reg . test(str));//再次打印true。上面提到的所有关于lastIndex的问题都是由于正则表达式对象中的修饰符g。如果没有修饰语g,就不用担心这些问题。

摘要

这次我主要讲一下JavaScript中正则表达式对象的五个属性,最需要注意的是lastIndex属性。

版权声明:JS中正则表达式的lastIndex属性需要注意是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。