var cc1_regexp = /\^0?[1-9]|1[0-9]|2[0-9]|3[0-1]\$/;
var invalid = cc1_regexp.test(document.loginform.cc1.value);
if (!invalid) {
errorMessage(document.loginform.cc1, "invalid");
return false;
}
就拿日期做例子,这个问题何在?现在出来什么东西都是INVALID。

解决方案 »

  1.   

    感谢您,我看懂了您的意思也觉得您的代码是正确的,不过我尝试了一下还是不断提示INVAILD。。比如11、12、13等一切都本应正确的数字。。
      

  2.   

    cc1_regexp = /^([0]?[1-9])$|^([1-2][0-9])$|^([3][0-1])$/;每一个分块都要加上匹配开始结束符吧,否则会匹配任意长度的,试试这个看~
      

  3.   


    in js:Code:function validateCc3() {
    if (document.loginform.cc3.value == "") {
    errorMessage(document.loginform.cc3, "can't be blank");
    return false;
    }
    else {
    var cc3_regexp = /0[1-9]|[12][0-9]|3[01]/;
    var cc3 = document.loginform.cc1.value;
    var valid = cc3_regexp.exec(cc1);
    if (!valid) {
    errorMessage(document.loginform.cc3, "invalid");
    return false;
    }
    else {
    removeErrorMessage(document.loginform.cc3);
    return true;  }
    }
    }html:Code:<input class="requiredshort" type="text" id="cc3" name="cc3" maxlength="2" size="4" onblur="validateCc3();">谢谢各位的意见,看似都是正确的,但是实验后都不行。。不知道是什么原因,一直显示的是INVALID。
      

  4.   

    /0[1-9]|[12]\d|3[0-1]/ 这个应该是可以的 我试过了
    var valid = cc3_regexp.exec(cc1); 改成 var valid = cc3_regexp.test(cc1);同时确保cc1是string这样就可以匹配0[1-9] 如果是数字前导0会去掉的 匹配就错误了 
      

  5.   

    崩溃...//匹配yyyy-MM-dd(限制年必须为4位数,即必须是1000年之后,9999年之前的日期)
    /^[1,2]\d{3}-((0?[1-9])|(1[012]))-((0?[1-9])|([12]\d)|(3[01]))$/
    //匹配年(范围0-9999)
    /^\d{1,4}$/
    //匹配月
    /^(?:(0?[1-9])|(1[012]))$/
    //匹配日
    /^(?:(0?[1-9])|([12]\d)|(3[01]))$/