JavaScript使用验证器过滤电子邮件

时间:2017-09-17 12:13:50

标签: javascript php jquery email

我想知道你怎么能接受电子邮件地址的任何扩展名。而不是通过特定的域名扩展名。

例如

foo@surrey.ac.uk< - 需要工作,而萨里是延伸

foo@survey.ac.uk< - 需要工作和调查是扩展

这是我的代码。这是有效的,但问题是,如果你为电子邮件ac.uk添加了一个扩展,它不接受它。例如,如果我注册了一封电子邮件foo@ac.uk,它可以使用,但是如果您尝试添加电子邮件的扩展名,如foo@surrey.ac.uk或foo@survey.ac.uk,则不接受。我希望它添加任何扩展功能。谢谢你!

> polymer test -l edge

Error: The following browsers are unsupported: edge. (All supported browsers: aurora, canary, chrome, firefox, ie)

有人在此帖Email validation using jQuery

中将此查询报告为重复

但我的问题不同,因为我需要一个经过批准的域名扩展。不是一般的电子邮件验证

1 个答案:

答案 0 :(得分:0)

首先,您应该在重复的帖子条目中使用验证正则表达式 - 它比您包含.+要好得多,这意味着匹配任何一个或多个任何字符 - 这将允许很多通过无效的电子邮件。您应该验证整个电子邮件,而不仅仅是一部分或另一部分。

至于匹配域名,因为您想要包含子域名,请使用正则表达式来准确匹配域名或以域名结尾但前面有一段时间(any@ac.uk有效,任何@surrey .ac.uk有效,但any@surreyac.uk或any@google.com不匹配。)

JSFiddle Example

//for custom email
jQuery.validator.addMethod('customemail', function(value, element) {
  var s=value;
  var split = s.split('@');
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  var s2=/(^|\.)ac.uk$/; // Regex to ensure domain is either exactly "ac.uk" or ends with ".ac.uk"

  //Debugging - This is useful to see visually what is happening
  //alert(split[0]);  // Shows the inputted username i.e chris or smokey
  //alert(split[1]);  // Shows the inputted domain
  //alert(regex.test(split[0]));  //Shows unfilled inputs problem or bad characters, true if good, false if bad
  //alert(s2 == split[1]);**  // Shows if the inputted domain matches variable s2, if it does we get a true

  // Ensure entire email is valid and that it is or ends with the required domain
  if(regex.test(s) && (s2.test(split[1])))
  {
    return true;
  }
  else
  {
    return false;
  }
}, 'Please specify a Verified Email')