为什么我的easyUI验证器无效?

时间:2016-06-08 08:36:53

标签: javascript regex validation jquery-easyui jeasyui

JSP:

<li id="osDriverLic" style="Display: none"><label><spring:message 
                            code="MESS_License" />:</label> <input
                    type="text" class="easyui-validatebox" id="driverLicNew"
                    name="Driverlicense" 
                    data-options="validType:['alphanumeric']" /></li>

JavaScript的:

    function doValidate(){

    $.extend($.fn.validatebox.defaults.rules, {
        equals: {
            validator: function(value,param){
                return value == $(param[0]).val();
            },
            message: 'Fields do not match.'
        },
        emailAddress: {
            validator: function(value,param){
                var myReg=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                var emails = value.split(";")
                for(var i=0;i<emails.length;i++){
                    console.log(emails[i]);
                    if(emails[i] != null && emails[i] != ''){
                        if(!myReg.test(emails[i])){
                            return false;
                        }else{
                            continue;
                        }
                    }
                }
                return true;
            },
            message: 'Please enter a valid email address.'
        },
        //here is my custom validator
        alphanumeric: {
            validator: function(value,param){
            console.log("come here"); // anyway it has no log in console here..
        var reg= /^(?!([a-zA-Z]+|\d+)$)[a-zA-Z\d]{1,10}$/; 
        console.log("come here 2"); // no log, too.
            return reg.test(value);
        },
            message: 'Please enter a valid alphanumeric combination with 1–10 characters.'
       } 
});
        $("#editAccountForm .easyui-validatebox").each(function () {
            $(this).validatebox('validate');
        });
    }

我的代码可能没什么问题,因为当我改变代码时 validType:['alphanumeric']validType:['emailAddress'], 它确实进入了验证器。但现在,它在这里没有任何影响。那我的js代码有什么问题?

顺便说一下,如果我需要,它会验证:

(1)字母数字组合,包含字母和数字。

(2)和[1,10]中的长度,如何编写RegExp?我尝试了代码

var myReg=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

但我不确定这是对的。

1 个答案:

答案 0 :(得分:0)

在javascript中,变量VReg可能应该命名为mReg,并用作mReg.test(...)。没有要测试的reg变量,所以javascript片段会出错吗?

匹配包含至少1个字母和1个数字的2到10个字母数字的正则表达式:

/^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{1,10}$/

这将匹配:

123456789A
abcdefgHI0
a0

但不是:

abcdefghij
1234567890
abcdefgh123lm
abc-012

如果是第一封验证正则表达式的电子邮件。 这可能更短:

/^[\w.-]+\@[\w.-]+\.[\w]{2,4}$/