JS中使⽤正则表达式g模式和⾮g模式的区别
先给⼤家说下js正则表达式中的g到底是什么意思
g是global的缩写啊!
就是匹配全部可匹配结果,
如果你不带g,在正则过程中,字符串是从左⾄右匹配的,如果匹配成功就不再继续向右匹配了,如果你带g,它会重头到尾的把正确匹配的字符串挑选出来
例如:
var str = 'aaaaaaaa'
var reg1 = /a/
var reg2 = /a/g
str.match(reg1) // 结果为:["a", index: 0, input: "aaaaaaaa"]
str.match(reg2) // 结果为:["a", "a", "a", "a", "a", "a", "a", "a"]
js正则表达式g模式与⾮g模式的区别,具体代码如下所⽰:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>mischen</title>
<script>
//js中使⽤正则表达式
function test(){
js中文正则表达式//⽣成正则表达式对象;
// 在g模式下,正则表达式对象的exec和test⽅法,依赖正则表达式对象的lastIndex属性,⽽lastIndex会根据我们exec
// 和test的执⾏发⽣偏移如果没有相应匹配 lastIndex 重归0
//在⾮g模式下,正则表达式对象的exec和test⽅法, lastIndex 不会发⽣偏移
//exec⽅法如果正则表达式中有分组第⼀个返回的是匹配到的字符串后⾯是根据分组分别返回的匹配的字符串
var reg=new RegExp("\\d+[a-z]+","ig"); //字符串⾥ \ 表⽰转译
var str="123abc123def";
alert(reg.lastIndex);//0
(str));//123abc
alert(reg.lastIndex);//6
st(str));//true
alert(reg.lastIndex);//12
}
// test();
test1();
function test1(){
//⾮g模式下使⽤ exec 和test
var reg=new RegExp("\\d+[a-z]+","i");
var str="123abc123def";
// alert(reg.lastIndex);//0
// (str));//123abc
// alert(reg.lastIndex);//0
// st(str));//true
// alert(reg.lastIndex);//0
/
/ (str));//123abc
// alert(reg.lastIndex);//0
// st(str));//true
// alert(reg.lastIndex);//0
var reg=new RegExp("(\\d+)([a-z]+)","i");
(str));//123abc,123,abc
(str));//123abc,123,abc
}
</script>
</head>
<body>
</body>
</html>
以上所述是⼩编给⼤家介绍的JS中使⽤正则表达式g模式和⾮g模式的区别,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论