我在使用javascript验证某些字段时遇到了一些问题。我正在尝试测试名为最多30个字符的字段,John Smith,Paul M'Dougall Laura-Jane应该都测试为真,但gazz8932应该测试错误。
EAID应该最多16个字符123kjg-34_dfs应该测试为true但是wil *& $ etc它应该测试为false。
最后网址应来自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');
}
答案 0 :(得分:2)
您需要在结尾处使用 $
标记正则表达式,以使其与表达式中的任何内容都不匹配。这样,您将使用以下表达式匹配"Paul"
,而不是"Paul123"
:
var reg = /^[a-z ,.'-]{0,30}$/i;
同样的事情发生在eai
:
var reg = /^[a-z0-9-_]{0,16}$/i;