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

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

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

  1. 邮编
    大家常见的邮编一般都是由6位阿拉伯数字组成的一串数字,这个验证是比较简单单一的,因为字符串中不牵扯到特殊字符,所以可以直接简单暴力的写成:\d\d\d\d\d\d,但是大家可能会问”\d代表的是什么意思?别人写的正则都很简短的,为什么这么简单的验证你写的这么长的?“
    问题一:\d 在正则里匹配的是一位数字。六个数字,自然就是六个\d
    问题二:正则表达式也是可以优化的,上面的方法自然是为了方便理解,进一步优化的写法是:\d{6},{6}表示的是左边的字符可以连续出现六次,在这里表示有6个数字占位符,注意,此时输入框里必须是6个数字,这是固定长度的,当然也有限长的:\d{3,6}表示可以有3到6个数字。
  2. 固定电话
    规则:区号-本地号,区号 本地号,(区号)本地号
    表达式:\d{3}-\d{8}|\d{4}-\d{7}
    解释:固定电话一般区号都是三位或四位数字,本地号是8位或7位数字,区号与本地号之间的”-“照常写就行了,现在有了不同情况,自然就需要有判断条件了,”|”就是分支条件,通俗一点的就是相当于if else,它左边的是格式一,右边的是格式二,即” 格式一 | 格式二 “。
  3. 邮箱
    规则:邮箱因一般以@为分隔符划分为两部分,左边一部分没有什么规律,右边的可以看成是两个单词组成,中间有一个点,即[email protected]
    表达式一:\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(){
            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>

你可能感兴趣的:(java,js,正则表达式,邮箱验证)