Regex email verification error - using JavaScript

99封情书 提交于 2019-12-06 15:59:55

问题


//if HTML5 input email input is not supported
if(type == 'email'){    
    if(!Modernizr.inputtypes.email){ 
         var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@([a-zA-Z0-9\-])+\.+([a-zA-Z0-9]{2,4})+$/;              
         if( !emailRegEx.test(value) ){ 
            this.focus();
            formok = false;
            errors.push(errorMessages.email + nameUC);
            return false;
        }
    }
}

This is my javascript regex for checking if e-mail format is correct. But When I try it myself it shows no error for any ..@.. It does not check .com or whatever in the end. What am I doing wrong?


回答1:


You need to use a regex that actually fits for an email address. Your current one is completely broken as there are tons of valid addresses it won't accept.

See http://www.regular-expressions.info/email.html for a more detailed description and arguments why a regex is not such a good idea after all.

Anyway, here's one that probably fits for your needs:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Here's what regular-expressions.info says about this regex:

We get a more practical implementation of RFC 2822 if we omit the syntax using double quotes and square brackets. It will still match 99.99% of all email addresses in actual use today.



来源:https://stackoverflow.com/questions/10371542/regex-email-verification-error-using-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!