0

一部のフィールドを JavaScript で検証するのに問題があります。最大 30 文字の name という名前のフィールドをテストしようとしています。John Smith、Paul M'Dougall、Laura-Jane はすべて true とテストする必要がありますが、gazz8932 は false とテストする必要があります。

EAID は最大 16 文字である必要があります。123kjg-34_dfs は true をテストする必要がありますが、*&$ などは false をテストする必要があります。

最後に、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');
}
4

1 に答える 1

2

$式からそれ以上一致しないように、最後に で正規表現をマークする必要があります。この方法では、 に一致しますが、次の式には一致"Paul"しません。"Paul123"

var reg = /^[a-z ,.'-]{0,30}$/i;

同じことが起こりeaiます:

var reg = /^[a-z0-9-_]{0,16}$/i;
于 2012-09-11T09:52:51.457 に答える