首页新闻找找看学习计划

正则表达式验证

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-01 15:29
1 date:function(value){
2             if(!this.msg('error')) this.msg('error','日期格式不合法');
3             if(value == "") return true;
4             return /^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$/.test(S.trim(value));
5         }

在eclipse中,在第4行,return那行报红显示异常,各位大侠帮忙看看那里的问题

小哪托的主页 小哪托 | 初学一级 | 园豆:189
提问于:2014-09-01 11:03
< >
分享
最佳答案
0

提示贴出来呀

收获园豆:5
龙卷风摧毁停车场! | 初学一级 |园豆:10 | 2014-09-01 15:13

Multiple markers at this line
- illegal octal literal digit 8; interpreting it as a
decimal digit
- syntax error
- illegal character
- syntax error
- illegal octal literal digit 8; interpreting it as a
decimal digit
- missing name after . operator
- illegal character
- missing name after . operator

小哪托 | 园豆:189 (初学一级) | 2014-09-01 15:16

@小锅盖: 试了一下,正则没问题。。

龙卷风摧毁停车场! | 园豆:10 (初学一级) | 2014-09-01 15:25

@咦?: 上面几行提示是什么意思?

小哪托 | 园豆:189 (初学一级) | 2014-09-01 15:26

@小锅盖: 意思是语法有问题,格式不正确之类,有全角字符什么的。但我试了你这正则是对的呀

龙卷风摧毁停车场! | 园豆:10 (初学一级) | 2014-09-01 15:28

@咦?: 好吧,那就先不管他了,,谢谢了

小哪托 | 园豆:189 (初学一级) | 2014-09-01 15:29

@小锅盖: 我擦。。。你这正则式对的但是正则后面的test不对。。

.test(S.trim(value)),里面的S是什么意思、、?是不是要改成value?

龙卷风摧毁停车场! | 园豆:10 (初学一级) | 2014-09-01 15:31

@咦?: 下面是所有的代码,,,在这段报错的代码上面也有这种格式的test,但是没有报错

KISSY.add(function (S) {
    var EMPTY = "";
    return {
        /**
         * 是否存在值
         * @param {String|Array} value 值(可能是输入框、radio、选择框)
         * @param {String} attr html tag中的属性值
         * @param {Promise.Defer} defer 用于异步校验
         * @param {Field} field Field的实例
         * @return {boolean}
         */
        required:function (value,attr,defer,field) {
            if(!this.msg('error')) this.msg('error','不可以为空!');
            var $target = this.get('target');
            var groupEls = ['radio','checkbox'];
            if(S.inArray($target.attr('type'),groupEls)){
                var checked = false;
                $target.each(function($el){
                    if($el.prop('checked')){
                        checked = true;
                        return false;
                    }
                })
                return checked;
            }
            return !!S.trim(value);
        },
        /**
         * 使用正则直接匹配
         */
        pattern:function (value,attr) {
            if(!this.msg('error')) this.msg('error','不符合要求');
            if(value == "") return true;
            return new RegExp(attr).test(value);
        },
        /**
         * 是否是数字
         */
        number:function(value){
            if(!this.msg('error')) this.msg('error','必须是数字');
            if(value == "") return true;
            return /^([+-]?)\d*\.?\d+$/.test(S.trim(value));
        },
        /**
         * 最大值验证
         */
        max:function (value,attr,defer,field) {
            if(!this.msg('error')) this.msg('error','必须小于'+attr);
            if(value == "") return true;
            var $target = this.get('target');
            if($target.attr('type') == 'checkbox'){
                value = 0;
                $target.each(function($el){
                    if($el.prop('checked')) value ++;
                })
                if(!this.msg('error')) this.msg('error','最多只能选择'+attr+'项');
            }
            return Number(value) <= Number(attr);
        },
        /**
         * 最小值验证
         */
        min:function (value,attr,defer,field) {
            if(!this.msg('error')) this.msg('error','必须大于'+attr);
            if(value == "") return true;
            var $target = this.get('target');
            if($target.attr('type') == 'checkbox'){
                value = 0;
                $target.each(function($el){
                    if($el.prop('checked')) value ++;
                })
                if(!this.msg('error')) this.msg('error','至少选择'+attr+'项');
            }
            return Number(value) > Number(attr);
        },
        /**
         * 校验值是否等于属性配置的值
         */
        equal:function(value,attr,defer,field){
            if(!this.msg('error')) this.msg('error','值必须等于'+attr);
            if(value == "") return true;
            return S.trim(attr) === S.trim(value);
        },
        /**
         * 校验二个字段的值是否相同
         * @param value
         * @param attr
         */
        "equal-field":function(value,attr){
            if(!this.msg('error')) this.msg('error','二个字段值必须相同!');
            if(value == "") return true;
            var field = this.get('field');
            var auth = field.get('host');
            if(!auth) return true;
            var matchFiled = auth.getField(attr);
            if(!matchFiled) return true;
            var val = matchFiled.get('target').val();
            return S.trim(val) === S.trim(value);
        },
        /**
         * 新添加的规则1
         * 校验一个字段的值必须要小于另一个字段
         * @param value
         * @param attr
         */
        "smaller-field":function(value,attr){
            if(!this.msg('error')) this.msg('error','数字大小不合法');
            if(value == "") return true;
            if(isNaN(value)) return true;
            var field = this.get('field');
            var auth = field.get('host');
            if(!auth) return true;
            var matchFiled = auth.getField(attr);
            if(!matchFiled) return true;
            var val = matchFiled.get('target').val();
            if(val == '') return true;
            if(isNaN(val)) return true;
            return Number(S.trim(val)) >= Number(S.trim(value));
        },
        /**
         * 新添加的规则2
         * 校验一个字段的值必须要小于另一个字段
         * @param value
         * @param attr
         */
        "bigger-field":function(value,attr){
            if(!this.msg('error')) this.msg('error','数字大小不合法');
            if(value == "") return true;
            if(isNaN(value)) return true;
            var field = this.get('field');
            var auth = field.get('host');
            if(!auth) return true;
            var matchFiled = auth.getField(attr);
            if(!matchFiled) return true;
            var val = matchFiled.get('target').val();
            if(val == '') return true;
            if(isNaN(val)) return true;
            return Number(S.trim(val)) <= Number(S.trim(value));
        },
        /**
         * 新添加的规则3 此规则与bigger-field 一模一样,主要是因为该字段需要与另俩个字段比较,以示区分
         * 校验一个字段的值必须要小于另一个字段
         * @param value
         * @param attr
         */
        "bigger-field2":function(value,attr){
            if(!this.msg('error')) this.msg('error','数字大小不合法');
            if(value == "") return true;
            if(isNaN(value)) return true;
            var field = this.get('field');
            var auth = field.get('host');
            if(!auth) return true;
            var matchFiled = auth.getField(attr);
            if(!matchFiled) return true;
            var val = matchFiled.get('target').val();
            if(val == '') return true;
            if(isNaN(val)) return true;
            return Number(S.trim(val)) <= Number(S.trim(value));
        },
        /**
         * 新添加的规则4 能输入的最长字符串
         * @param value
         * @param attr
         */
        "longest":function(value,attr){
            this.msg('error','不能超过'+attr+'个字');
            return value.length <= Number(attr);
        },
        /**
         * 是否符合email格式
         * @param value
         */
        email:function(value){
            if(!this.msg('error')) this.msg('error','邮箱格式不合法');
            if(value == "") return true;
            return /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(S.trim(value));
        },
        /**
         * 是否符合手机格式
         * @param value
         */
        mobile:function(value){
            if(!this.msg('error')) this.msg('error','手机号码格式不合法');
            if(value == "") return true;
            return /^0?\d{9,11}$/.test(S.trim(value));
        },
        /**
         * 是否符合电话格式
         * @param value
         */
        telephone:function(value){
            if(!this.msg('error')) this.msg('error','电话号码格式不合法');
            if(value == "") return true;
            return /^\d{4}-\d{7,8}$|^\d{11}$|^\+86\d{11}$|^0\d{10,12}$|^\d{7,8}$/.test(S.trim(value));
        },
        /**
         * 是否符合邮箱、手机登录格式:支付宝账号
         * @param value
         */
        alipayAccount:function(value){
            if(!this.msg('error')) this.msg('error','支付宝账号格式不合法');
            if(value == "") return true;
            return /^0?\d{9,11}$/.test(S.trim(value))||/^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(S.trim(value));
        },
        /**
         * 是否符合日期格式
         * http://blog.csdn.net/lxcnn/article/details/4362500
         * @param value
         */
        date:function(value){
            if(!this.msg('error')) this.msg('error','日期格式不合法');
            if(value == "") return true;
            return /^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2\2(?:29))$/.test(S.trim(value));
        }
    };

});
小哪托 | 园豆:189 (初学一级) | 2014-09-01 15:36

刚看错了,这函数好像没问题。

龙卷风摧毁停车场! | 园豆:10 (初学一级) | 2014-09-01 15:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册