zl程序教程

您现在的位置是:首页 >  前端

当前栏目

javascript学习笔记(十二)RegExp类型介绍

JavaScript笔记学习 类型 介绍 十二 REGEXP
2023-06-13 09:14:34 时间
1.匹配模式标记:
g------表示全局模式,而不是发现第一个匹配成功就立刻结束
i-------表示不区分大小写模式
m-----表示多行匹配,一行结束时向下一行继续匹配
复制代码代码如下:

//匹配第一个bat或cat,不区分大小写
varpattern1=/[bc]at/i
varpattern2=newRegExp("[bc]at","i");//同上

使用RegEXp是字面量模式要转换成字符串
/\[bc\]at/=======>"\\[bc\\]at"
/\.at/==========>"\\.at"
/name\/age/======>"name\\/age"
/\d.\d{1,2}/======>"\\d.\\d{1,2}"
/\w\\hello\\123/====>"\\w\\\\hello\\\\123

2.RegExp实例属性
global——布尔值,表示是否设置了g标志
ignoreCase——布尔值,表示是否设置了i标志
multiline——布尔值,表示是否设置了m标志
lastIndex——整数,表示开始搜索下一个匹配项的位置
source——字面量形式的字符串
复制代码代码如下:

varpattern2=newRegExp("\\[bc\\]at","i");
alert(pattern2.source);//"\[bc\]at"

3.RegExp实例方法
exec()方法接受一个参数,即应用正则表达式的字符串,
返回数组和两个属性index和input,数组第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串
复制代码代码如下:
vartext"momanddatandbaby";
varpattern=/mom(anddad(andbaby)?)?/gi;

varmatches=pattern.exec(text);
alert(matches.index);//0
alert(matches.input);//"momanddadandbaby"
alert(matches[0]);//"momanddadandbaby"
alert(matches[1]);//"anddadandbaby"
alert(matches[2]);//"andbaby"

非全局模式时每次调用exec()返回的都是第一次匹配的项
全局模式时每次调用ecec()返回字符串的下一个匹配项,lastIndex的值会增加

test()方法接受一个参数,即应用正则表达式的字符串,匹配返回true否则返回false
复制代码代码如下:
vartext="000-00-0000";
varpattern=/\d{3}-\d{2}-\d{4}/;

if(pattern.test(test)){
alert("匹配!");
}

4.RegExp构造函数属性
复制代码代码如下:
vartext="thishasbeenashortsummer";
varpattern=/(.)host/g;

if(pattern.test(text)){
alert(RegExp.input);//thishasbeenashortsummer最近一次要匹配的字符串,等价于RegExp.$_,opera不支持
alert(RegExp.lastMatch);//short最近一次的匹配项,等价于RegExp["$&"],opera不支持
alert(RegExp.lastParen);//s最近一次匹配的捕获组,等价于RegExp["$+"],opera不支持
alert(RegExp.leftContext);//thishasbeena匹配项前的文本,等价于RegExp["$`"]
alert(RegExp.rightContext);//summer匹配项后的文本,等价于RegExp["$‘"],
alert(RegExp.multiline);//false是不是多行模式,等价于RegExp["$*"],opera和IE都不支持
}

RegExp.$1……RegExp.$9存储捕获组
复制代码代码如下:
vartext="thishasbeenashortsummer";
varpattern=/(..)or(.)/g;
if(pattern.test(text)){
alert(RegExp.$1);//sh
alert(RegExp.$2);//t
}