使用JavaScript进行超级简单的电子邮件验证

wil*_*fun 28 javascript jquery

我正在制作一个非常简单的电子邮件验证脚本,基本上只是检查以下内容

  1. 电子邮件不是空白的
  2. 电子邮件中包含一个@符号,前面至少包含1个字符
  3. 有一个域,即@后面至少有2个字母
  4. 它以一个至少包含2个字母的后挡板结束

我知道有更多的检查,但我看看这些正则表达式规则,我的思想停止工作.我想如果我从像这样小的东西开始,我可能能够围绕更复杂的规则.

目前使用一些jquery我做以下事情:

 var booking_email = $('input[name=booking_email]').val();

 if(booking_email == '' || booking_email.indexOf('@') == -1 || booking_email.indexOf('.') == -1) {

   // perform my alert

 }
Run Code Online (Sandbox Code Playgroud)

到目前为止,这足以阻止90%的虚假电子邮件...我只想让它更有效,因为目前我的规则将允许电子邮件,如"@ domain.com"或"user @ domain".因为它只检查是否有一个fullstop和一个@符号.

谢谢你的任何提示.

Ash*_*ams 67

别人的建议应该可以正常工作,但如果你想保持简单,试试这个:

var booking_email = $('input[name=booking_email]').val();

if( /(.+)@(.+){2,}\.(.+){2,}/.test(booking_email) ){
  // valid email
} else {
  // invalid email
}
Run Code Online (Sandbox Code Playgroud)

即使你决定选择更强大的东西,它也应该有助于你理解正则表达式有时是多么简单.:)

  • 很好,你在我之前发布了11秒.虽然这个RegExp是正确的,没有必要使用捕获parens,你应该使用`test`而不是`search`,锚定你的RegExps总是一个好习惯. (6认同)
  • 开头的`^`和末尾的`$`是'锚点'.他们要求字符串必须完全以^旁边的内容开头,并以$之前的内容结束.查看这个的一个简单方法是`/ a /`将匹配'a',但`/ ^ a /`不匹配. (6认同)
  • 是否可以更改为仅允许一个 `@` 登录电子邮件 ID? (2认同)
  • 我的意思是,这显然是错误的。它应该是固定的,或者至少不应该被接受为答案。 (2认同)

gon*_*uki 40

使用此RegExp进行的最少贪婪验证/^.+@.+\..+$/
只会确保地址符合您提到的最基本要求:@之前的字符以及域部分中点之前和之后的字符.验证更多可能是错误的(您总是有可能将有效的电子邮件列入黑名单).

像这样用它:

var is_valid_email = function(email) { return /^.+@.+\..+$/.test(email); }
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案要好.你怎么看待进一步使用"非空白"快捷方式,如`\ S + @\S + \.\ S +`?因为现在`.`也会接受电子邮件中不允许的空白字符 (4认同)
  • 这对我正在寻找的东西很有用.我将在后端进行更多验证,但允许JS至少清除掉更明显的假货是很方便的. (2认同)
  • 您应该限制 @ 符号,而不是允许像 geedew 的答案中那样的任何字符。否则,这允许任意数量的@符号。即使只是简单的“@@@.@”也会通过。 (2认同)