您的位置:首页 > Web前端 > JavaScript

利用正则表达式对电话号码、邮箱的验证

2016-10-21 15:42 465 查看

正则表达式是一个神奇的东西,很多人都喜欢使用正则表达式来进行表单的验证,例如电话号码、邮箱、邮编、非空等的验证,当然,一些简单的验证,你可以使用别人封装好的技术来验证,但是需求中又复杂的验证的话,还是正则表达式会更好用,如果你懂得正则表达式的话,这些验证写起来确实很简单呢,如果不是很懂的话,我这里可以先向各位介绍几种简单的正则表达式验证。当然网上也有很多大牛的技术分享,大家可以共同探讨学习下。

还是先给大家举例子说明吧:

邮编

大家常见的邮编一般都是由6位阿拉伯数字组成的一串数字,这个验证是比较简单单一的,因为字符串中不牵扯到特殊字符,所以可以直接简单暴力的写成:\d\d\d\d\d\d,但是大家可能会问”\d代表的是什么意思?别人写的正则都很简短的,为什么这么简单的验证你写的这么长的?“

问题一:\d 在正则里匹配的是一位数字。六个数字,自然就是六个\d

问题二:正则表达式也是可以优化的,上面的方法自然是为了方便理解,进一步优化的写法是:\d{6},{6}表示的是左边的字符可以连续出现六次,在这里表示有6个数字占位符,注意,此时输入框里必须是6个数字,这是固定长度的,当然也有限长的:\d{3,6}表示可以有3到6个数字。

固定电话

规则:区号-本地号,区号 本地号,(区号)本地号

表达式:\d{3}-\d{8}|\d{4}-\d{7}

解释:固定电话一般区号都是三位或四位数字,本地号是8位或7位数字,区号与本地号之间的”-“照常写就行了,现在有了不同情况,自然就需要有判断条件了,”|”就是分支条件,通俗一点的就是相当于if else,它左边的是格式一,右边的是格式二,即” 格式一 | 格式二 “。

邮箱

规则:邮箱因一般以@为分隔符划分为两部分,左边一部分没有什么规律,右边的可以看成是两个单词组成,中间有一个点,即xxxx@xxx.xx

表达式一:\w+@\w+.\w+

解释:这是我自己写的一个简单的邮箱验证,” \w “匹配一个字母、数字、下划线、汉字,” \w “+表示匹配至少一个或者更多的连续的\w,” \ “表示字符转义,因为” . “在正则里是元字符,匹配除了换行符以外的任意字符,而邮箱里肯定有”.“,所以这是提示正则转义。有很多人早就看出来,这个表达式有漏洞,比如邮箱的第一个字符不是字母,是”- 、_ . “这类的符号,这个表达式就无法检测出来了,当然还有其他的,在这里就不自爆短处了,各位可以自己测,收获会更多。

在这里再给大家补充一个更加完善的邮箱验证表达式,这个应付正常的验证的应该是没什么大问题了。

表达式二:[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,5}

解释:这个是我在别人的基础上加以完善得来的,能够部分解决表达式一的漏洞,如有哪位大牛有更好的,可以给大家分享一下,大家共同进步。

最后给大家放点代码,供大家参考:

<script type="text/javascript">
//检查固定电话是否符合标准  即000-88888888 或者 0000-7777777
function checkTelPhone()
4000
{
var reg = new RegExp(/^\d{3}-\d{8}|\d{4}-\d{7}$/);
check("agentTel",reg);
}
//检测传真,规则同上
function checkFax(){
var reg = new RegExp(/^\d{3}-\d{8}|\d{4}-\d{7}$/);
check("faxNum",reg);
}
//nameId即标签的id属性,reg即正则表达式,如果不符合正则表达式,则清空所填信息
function check(nameId,reg){
var phoneNum = document.getElementById(nameId);
if(!reg.test(phoneNum.value)){
$(phoneNum).val("");
}
}
</script>
<form>
<li>
<label>固定电话:</label>
<input maxlength="20" name="contactsTixedTel" type="text" onblur="checkTelPhone()"/>
</li>
<li>
<label>传真:</label>
<input maxlength="20" name="contactsFax" type="text" onblur="checkFax()" />
</li>
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息