[javascript学习指南]javaScript中正则表达式判断exec()函数用法

更新时间:2019-11-24    来源:正则表达式    手机版     字体:

【www.bbyears.com--正则表达式】


在最近的项目中经常需要进行各种信息的格式验证,当然,最常用的就是通过正则表达式进行验证,

在查阅之前的博客中,发现一种方式如下:

邮箱格式不正确

if(!$(“#email”).val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)){
alert(“邮箱格式不正确”);
$(“#email”).focus();
return false;
}

这是通过match()函数进行比较,经过尝试,发现也可以使用这一个函数exec()

实例如下:

var mobilephone = /^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/;
 
$(".maintenance_phone").blur(function(event) {
var phone = $(this).val();
var errorMsg = "手机号格式不正确";
$(this).parents(".tips-after2").siblings(".form-tips").remove();
if(!mobilephone.exec(phone)){
$(".tips-after2").after("

"+errorMsg+"

");
}
});

与上面的方法不同的是,在输入框失去焦点时,进行判断,并实时打印出错误信息,为了更好地交互,下面的方面更好些吧。

还需要注意if()里判断的,通过定义变量,形式更加简洁。

附加:

//提示输入错误信息
var tel = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
var idcard = /^[1-9]([0-9]{14}|[0-9]{17}|([0-9]{16}[xX]))$/i; //身份证
var mail = /.+@.+\.[a-zA-Z]{2,4}$/;

注意:这些正则表达式是不能加引号的。。。

正则表达的规则一些规则在此不再说明,只记录exec和match的区别:

1、exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示:

如上定义

var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
reg.exec(str );

2、match是字符串执行匹配正则表达式规则的方法,他的参数是正则表达,如

var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
str.match(reg);

3、exec和match返回的都是数组;

如果exec执行的正则表达式没有子表达式(小括号内的内容,如/abc(\s*)/中的(\s*) ),如果有匹配,就返回第一个匹配的字符串内容,此时的数组仅有一个元素,如果没有匹配返回null;

var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

执行如上代码,你会发现两者内容均为一样:abc,

4、如果定义正则表达对象为全局匹配如:

var reg = new RegExp("abc","g") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

则 为abc和abc,abc;因为match执行了全局匹配查询;而exec如果没有子表达式只会找到一个匹配的即返回。
5、当表示中含有子表达式的情况:

var reg = new RegExp("a(bc)") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

你会发现两者执行的结果都是:abc,bc;
6、当如果正则表达式对象定义为为全局匹配

var reg = new RegExp("a(bc)","g") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));
alert(str.match(reg));

则两者返回的结果是abc,bc和abc,abc,

本文来源:http://www.bbyears.com/aspjiaocheng/80917.html

热门标签

更多>>

本类排行