0

我需要验证带有额外域的电子邮件地址。我目前验证了一封普通的电子邮件@email.com,但我需要验证一封电子邮件@email.email.com。我对 RegEx 不够熟悉。

$.validator.addMethod('matches', function (value, element, param) {
    return this.optional(element) || value.match(param);
},
'Please enter a valid value.');

$(function() {

 $("form").validate({

            rules: {
                email: {
                    required: true,
                    email: true,
                    matches: '.+@email.com'
                }
            }, messages: {
                email: {
                    matches: 'Must be a email.com e-mail address.'
                }
            }
        });
  });
4

2 回答 2

1

要将任何(通常)电子邮件与两部分顶级域匹配,就像*@google.co.uk您可以使用 RegExp 一样,它匹配域部分中的 2-3 个单词部分:

var emailRegExp = /[a-zA-Z0-9._-]@[a-zA-Z0-9-]+\.\w+(\.\w+)?/
...
// in your code
matches: emailRegExp

RegExp 解释说:

  • 名称部分[a-zA-Z0-9._-]将匹配任何常用字符,以及.,_-

  • 域名部分[a-zA-Z0-9-]与名称大致相同,但没有._

  • 顶级域部分\.\w+(\.\w+)?将匹配任何单个 tld,如.com,.net等,以及双倍的.co.uk, .co.jp,.foo.bar

RegExp 很短。如果您真的对正确的电子邮件验证感兴趣,您应该查看RFC822-Spec (SCNR :D)

于 2012-05-31T21:28:30.110 回答
0

这适用于 jquery validate 以验证电子邮件属于组织。我真的很接近,但我认为它不需要一些东西。

(.+@+[A-Za-z0-9._-]+\\.email.com$)|(.+@email.com$)
于 2012-05-31T21:56:37.213 回答