RegExp对象方法
RegExp对象的常用方法除了test() 之外还有exec()方法,RegExp对象的方法。
方法 | 描述 |
---|---|
test() | 语法为test(str) 该方法检查一个字符串是否存在创建RegExp对象实例时所指定的表达式模式,如果存在就返回True,否则返回False 。如果找到匹配项,则会更行RegExp对象中的有关静态属性,以反应匹配情况。 |
exec() | 语法格式为exec(str) 该方法使用创建RegExp实例时所指定的表达式模式对一个字符串进行搜索,并返回一个包含搜索结果的数组。 |
注意:
如果为正则表达式设置了全局标志(g),可以通过多次调用exec()和test() 方法在字符串进行连续搜索,每次都是从RegExp对象lastIndex静态属性值指定的位置开始搜索字符串。如果没有设置全局标志(g),则exec()和test() 方式忽略RegExp对象的lastIndex 属性值,从字符串的起始位置开始搜索。
说明:
如果exec()方法没有找到匹配,返回值null;如果找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包含了完成的匹配结果,而元素1-n依次时表达式模式中定义的各个子匹配的结果。exec()方法返回的数组有3个属性,分别是 input ,index 和lastIndex。
案例1:使用正则表达式来检验一个密码字符串是否符合要求:
以字母开头,只能包含字母,数字和下划线 6-18个字符
<script>
var txtpassword="my oeac";
var re=new RegExp("^[A-Za-a]\\w{5,17}$");
var result=re.test(txtpassword);
if(result){
alert(ok);
}
else{
alert(no)
}
</script>
案例2:演示使用了正则表达式从超链接标签中提取href属性的值
<script>
var code = '<a href="http://www.baidu.com"></a>';
var re= /href=\"(.*?)\"/;
var result=re.exec(code);
document.write("方法返回的数组:"+result +"<br />");
document.write("匹配的结果为:"+result[0] +"<br />");
document.write("圆括号内子匹配的结果:"+result[1]);
</script>