使用JavaScript进行超级简单的电子邮件validation
我正在制作一个非常简单的电子邮件validation脚本,基本上只是检查以下内容
- 电子邮件不是空白的
- 电子邮件包含一个@符号,前面至少包含1个字符
- 有一个域,即@后面至少有2个字母
- 它以一个至少包含2个字母的后挡板结束
我知道有更多的检查,但我看看这些正则表达式规则,我的思想停止工作。 我想如果我从这样的小事开始,我可能能够围绕更复杂的规则。
目前使用一些jquery我做以下事情:
var booking_email = $('input[name=booking_email]').val(); if(booking_email == '' || booking_email.indexOf('@') == -1 || booking_email.indexOf('.') == -1) { // perform my alert }
到目前为止,这足以阻止90%的虚假电子邮件……我只是想让它更有效,因为目前我的规则将允许电子邮件,如“@ domain.com”或“user @ domain”。 因为它只检查是否有一个fullstop和一个@符号。
谢谢你的任何提示。
别人的建议应该可以正常工作,但如果你想保持简单,试试这个:
var booking_email = $('input[name=booking_email]').val(); if( /(.+)@(.+){2,}\.(.+){2,}/.test(booking_email) ){ // valid email } else { // invalid email }
即使您决定使用更强大的东西,它也应该有助于您了解正则表达式有时简单。 🙂
您最不可能的贪婪validation是使用此RegExp /^.+@.+\..+$/
它只会确保地址符合您提到的最基本要求:@之前的字符以及域部分中点之前和之后的字符。 validation更多可能是错误的(您总是有可能将有效的电子邮件列入黑名单)。
像这样用它:
var is_valid_email = function(email) { return /^.+@.+\..+$/.test(email); }
出于某种原因,RegexLib.com( http://regexlib.com/Search.aspx?k=email )有数百个电子邮件validation例程。 我建议你阅读这篇文章: http : //www.unwrongest.com/blog/email-validation-regular-expressions/如果你决定继续使用正则表达式进行validation,我最喜欢的测试实用程序是免费的正则表达式设计师可用免费在这里: http : //www.radsoftware.com.au/regexdesigner/ …测试所有电子邮件在一个大的列表(可免费下载或购买…或使用您自己的当前数据库),以确保您的正则表达式是在你的约束内可以接受
我会推荐一个基本的测试(很多在regexlib.com的顶部…我不会因为我经常使用他们的工作而受到赞誉),接着是需要用户交互的电子邮件validation例程。 这是“validation”电子邮件地址的唯一真实方式。
你可以试试这个:
var booking_email = $('input[name=booking_email]').val(); if(booking_email.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) { // valid email } else { // not valid }
尝试:
function valid_email(email) { return email.match(/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[az])\.)+[az]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i); }
根据这篇文章 ,这是最好的可用电子邮件validation正则表达式 。 我推荐使用它,除非你的目标非常简单但不完全兼容。
电子邮件很难测试,但您可以进行一些限制性但简单的电子邮件validation。 我自己使用这个,它确保95%的电子邮件地址相当不错。
var simpleValidEmail = function( email ) { return email.length < 256 && /^[^@]+@[^@]{2,}\.[^@]{2,}$/.test(email); };
我建议将其用于“简单”validation。
要了解为什么这是一个难以解决的问题,请参阅: 如何使用正则表达式validation电子邮件地址?
更新 :更正正则表达式