Javascript验证问题

Javascript验证问题,javascript,jquery,regex,validation,Javascript,Jquery,Regex,Validation,我在用javascript验证某些字段时遇到了一些问题。我正在尝试测试一个名为“30个字符的名称”的字段,max、John Smith、Paul m'Dougall、Laura Jane都应该测试为真,而gazz8932应该测试为假 EAID最多应为16个字符123kjg-34_dfs应测试为真,但wil*&$etc应测试为假 最后,url应该来自youtube.com或ea.com,但我敢打赌这些都不管用 如果有任何光线可以照射,我们将不胜感激 // create the errors arr

我在用javascript验证某些字段时遇到了一些问题。我正在尝试测试一个名为“30个字符的名称”的字段,max、John Smith、Paul m'Dougall、Laura Jane都应该测试为真,而gazz8932应该测试为假

EAID最多应为16个字符123kjg-34_dfs应测试为真,但wil*&$etc应测试为假

最后,url应该来自youtube.com或ea.com,但我敢打赌这些都不管用

如果有任何光线可以照射,我们将不胜感激

// create the errors array
var errors = false;

// clean last errors
$('#goalsubmission p.error').remove();
$('#goalsubmission .error').removeClass('error');

// test the name
var reg = /^[a-z ,.'-]{0,30}/i;
var name = $('#goalsubmission input#name');
if(reg.test(name.val()) == false){
    name.parent().addClass('error');
    errors == true;
    name.parent().append('<p class="error">Make sure you have put your name using only letters and spaces.</p>');
} else {
    name.parent().removeClass('error');
}

/*
// test the email
var reg = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
var email = $('#goalsubmission input#email');
var result = reg.test(email.val());
if(email.val().length == 0 || result == false){
    email.parent().addClass('error');
    errors == true;
    email.parent().append('<p class="error">Make sure you have entered a valid email address.</p>');
} else {
    email.parent().removeClass('error');
}
*/

// test the ea id
var reg = /^[a-z0-9-_]{0,16}/i;
var eaid = $('#goalsubmission input#eaid');
if(reg.test(eaid.val()) == false){
    eaid.parent().addClass('error');
    errors == true;
    eaid.parent().append('<p class="error">Make sure you have entered a valid EAID.</p>');
} else {
    eaid.parent().removeClass('error');
}

// test the url
var regYT = /^http:\/\/(?:www\.)?youtube.com\/watch\?v=\w+(&\S*)?$/
var regEA = /^http:\/\/(?:www\.)?ea.com\/?$/
var url = $('#goalsubmission input#url');
if(
//                          url.val().length == 0 || 
//                          url.val().length > 255  || 
    (regYT.test(url.val()) == false && regEA.test(url.val()) == false)
){
    url.parent().addClass('error');
    errors == true;
    url.parent().append('<p class="error">Make sure you have entered a valid Url, from either YouTube or EA.</p>');
} else {
    url.parent().removeClass('error');
}
//创建错误数组
var错误=错误;
//清除最后的错误
$(“#goalsubmission p.error”).remove();
$('#goalsubmission.error').removeClass('error');
//测试名称
var reg=/^[a-z,.-]{0,30}/i;
变量名称=$(“#目标子任务输入#名称”);
if(reg.test(name.val())==false){
name.parent().addClass('error');
错误==真;
name.parent();
}否则{
name.parent().removeClass('error');
}
/*
//测试电子邮件
[a-z0-10-9-10 10-10-9现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场z0-9-]*[a-z0-9])?\)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\[(?:(?:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\){3}(?:25[0-5]| 2[0-4][0-9]|[01]?[a-Z09-]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\/;
var email=$(“#目标任务输入#email”);
var result=reg.test(email.val());
if(email.val().length==0 | | result==false){
email.parent().addClass('error');
错误==真;
email.parent().append(“

确保输入了有效的电子邮件地址。

”; }否则{ email.parent().removeClass('error'); } */ //测试eaid var reg=/^[a-z0-9-{0,16}/i; var eaid=$(“#目标子任务输入#eaid”); if(reg.test(eaid.val())==false){ eaid.parent().addClass('error'); 错误==真; eaid.parent().append(“

确保输入了有效的eaid。

”); }否则{ eaid.parent().removeClass('error'); } //测试url var regYT=/^http:\/\/(?:www.)?youtube.com\/watch\?v=\w+(&\S*)$/ var regEA=/^http:\/\/(?:www\)?ea.com\/$/ var url=$('goalsubmission input'url'); 如果( //url.val().length==0 | | //url.val().length>255 | | (regYT.test(url.val())==false&®EA.test(url.val())==false) ){ url.parent().addClass('error'); 错误==真; url.parent().append(“

确保您输入了来自YouTube或EA的有效url。

”; }否则{ url.parent().removeClass('error'); }
您需要在正则表达式末尾标记
$
,这样它就不会与表达式中的任何内容相匹配。这样,您将使用以下表达式匹配
“Paul”
,而不是
“Paul123”

var reg = /^[a-z ,.'-]{0,30}$/i;
同样的事情也发生在
eai

var reg = /^[a-z0-9-_]{0,16}$/i;

您可以指定规则说明为什么
gazz8932
*&$
不是有效匹配项吗?/^[a-z,.-]{0,30}/i据我所知,从字符串开始,长度为0-30个字符,不区分大小写,查找a-z空格、逗号、句号、连字符和引号。不是这样吗?没有提到数字,所以如果有正确的数字,它应该测试false?是的。我明白了我误解的根源:你一次问了三个问题。也许最好把问题分开,集中在每个正则表达式上。最好先搜索一下这个网站,因为像这样的问题已经被问了几十次了。我用下面的解决方案让一切都正常了。至于我使用的URL:var reg=/(youtube.com | ea.com)/;如果(reg.test(url.val())==false)等更好地转义点,或者您的正则表达式将遇到类似
tearcompany.info
的内容。另外,使用单词边界,否则您会错误地匹配
tea.com
等。不,包括大写字母(
/i
修饰符)。