我的脚本javascript是这样的:
email: {
required: true,
email: true
},
在textfield电子邮件中,我写道:chelsea@gmail
没有.com
,它有效。
解决我问题的任何解决方案?
谢谢
答案 0 :(得分:5)
要验证电子邮件地址是否为name@domain.tld
格式,您可以使用以下正则表达式:
var emailExp = new RegExp(/^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);
此正则表达式仅接受包含@ -sign,点和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 Validator:
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. */
if (regex && 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);
此正则表达式过滤掉可能输入的任何“垃圾”,并要求存在@ -sign,a和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的请求下在现实世界中完全有效。
答案 1 :(得分:3)
$(function() {
// Setup form validation on the #register-form element
$("#login-form").validate({
// Specify the validation rules
rules: {
email: {
required: true,
email: true
}
},
// Specify the validation error messages
messages: {
email: "Please enter a valid email address"
},
submitHandler: function(form) {
form.submit();
}
}); });
我希望它会有所帮助
答案 2 :(得分:2)
试试这个
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
答案 3 :(得分:0)
print -l <->[^-]*.jpg