gpt4 book ai didi

jquery - 如何使用 jquery validate 验证电子邮件?

转载 作者:行者123 更新时间:2023-11-30 23:49:22 25 4
gpt4 key购买 nike

我的 JavaScript 脚本是这样的:

email: {
required: true,
email: true
},

在文本字段电子邮件中,我写:chelsea@gmail没有.com ,有效。

有什么办法可以解决我的问题吗?

谢谢

最佳答案

编辑后的答案:

要验证电子邮件地址是否为 name@domain.tld 格式,您可以使用以下正则表达式:

var emailExp = new RegExp(/^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);

此正则表达式仅接受包含 @ 符号、点和 2-4 个字符长的 TLD 的电子邮件地址。

您可以使用上述正则表达式来验证给定的电子邮件地址,如下所示:

function validate_email (email) {
/* Define the recommended regular expression. */
var emailExp = new RegExp(/^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);

/* Test the email given against the expression and return the result. */
return emailExp.test(email);
}

jQuery 验证器:

jQuery Validator 不支持使用正则表达式,而是在内部使用默认的 HTML5 电子邮件正则表达式,因此您必须首先为验证器创建一个新方法来执行此操作:

$.validator.addMethod(
/* The value you can use inside the email object in the validator. */
"regex",

/* The function that tests a given string against a given regEx. */
function(value, element, regexp) {
/* Check if the value is truthy (avoid null.constructor) & if it's not a RegEx. (Edited: regex --> regexp)*/

if (regexp && regexp.constructor != RegExp) {
/* Create a new regular expression using the regex argument. */
regexp = new RegExp(regexp);
}

/* Check whether the argument is global and, if so set its last index to 0. */
else if (regexp.global) regexp.lastIndex = 0;

/* Return whether the element is optional or the result of the validation. */
return this.optional(element) || regexp.test(value);
}
);

现在已经为验证器创建了支持正则表达式验证的方法,您可以按如下方式使用 jQuery.validate:

$('#element_id').validate({
email: {
required: true,
email: true,
regex: /^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
}
});
<小时/>

原始答案(改进):

要过滤电子邮件地址并仅接受 name@domain.tld 等格式,请使用以下正则表达式:

var emailExp = new RegExp(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i);

此正则表达式会过滤掉可能输入的任何“垃圾”,并要求存在 @ 符号、点和 2-4 个字符长的 TLD。如果给定电子邮件地址的子字符串与其匹配,则返回子字符串,否则 false

您可以使用上述正则表达式来过滤给定的电子邮件地址,如下所示:

function filter_email (email) {
var
/* Define the recommended regular expression. */
emailExp = new RegExp(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i),

/* Use 'match' to filter the email address given and cache the result. */
filtered = email.match(emailExp);

/* Return the filtered value or false. */
return filtered ? filtered[0] : false;
}
<小时/>

注释:

  • 一年多前回答OP的问题时,我误以为他的电子邮件验证意图是试图过滤给定的字符串,只保留其中的一个子字符串,即电子邮件地址。

  • 此答案认为缺少 TLD 的地址无效,即使根据 OP 的要求它们在现实世界中完全有效。

关于jquery - 如何使用 jquery validate 验证电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37606285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com