JS输入框正则校验

1. 开发中需要对etl组件统一进行input输入框校验,允许为空,可以不校验,默认校验长度和特殊字符,代码如下,记录以备复用。

/**
 * 数据值校验工具类
 */
var checkService = {
    // 不校验
    none: function () {
        return true;
    },

    //非空校验
    isEmpty:function (str) {
        if (str == null || str == "") return false;
    },
// 只能输入数字[0-9] isDigits: function (str) { if (str == null || str == "") return true; var reg = /^d+$/; return reg.test(str); }, // 匹配english isEnglish: function (str) { if (str == null || str == "") return true; var reg = /^[A-Za-z]+$/; return reg.test(str); }, // 匹配integer(包含正负) isInteger: function (str) { if (str == null || str == "") return true; var reg = /^[-+]?d+$/; return reg.test(str); }, // 匹配汉字 isChinese: function (str) { if (str == null || str == "") return true; var reg = /^[u4e00-u9fa5]+$/; return reg.test(str); }, // 匹配中文(双字节字符,包括汉字和符号) isChineseChar: function (str) { if (str == null || str == "") return true; var reg = /^[u0391-uFFE5]+$/; return reg.test(str); }, // 匹配URL isUrl: function (str) { if (str == null || str == "") return true; var reg = /^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-
&_~`@[]’:+!]*([^<>"])*$/; return reg.test(str); }, // 字符验证,只能包含中文、英文、数字、下划线、空格。 stringCheck: function (str) { if (str == null || str == "") return true; var reg = /^[a-zA-Z0-9u4e00-u9fa5_ ]+$/; return reg.test(str); }, //字符长度校验(最长64位) stringLengthCheck: function (str, length) { if (str == null || str == "") return true; length = length || 64; if (str.length > length) return false; return true; }, //IP格式验证 isIP: function (str) { if (str == null || str == "") return true; var reg = /^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$/; return reg.test(str); } };

2. 给需要校验的input加上[data-vaild]属性:

data-valid=“校验函数名1 校验函数名2”(多种校验,校验名以空格区分)

- html中给每个带有data-attribute属性的input元素绑定data-valild属性:

<input id="limit" type="number" data-attribute="limit" value="0"  class="width-100" data-valid="isDigits stringLengthCheck"/>

- js中给input框绑定blur函数:

/**
 * 添加校验
 * @param $div
 */
StencilsEditor.prototype.bindCheck = function ($div) {
    //添加input校验
    $div.find("input[data-attribute]").on('blur', function () {
        var $this = $(this);
        var val = $this.val();
        var valid = $this.data("valid") || "stringCheck stringLengthCheck";
        var valids = valid.split(" ")
        for (var i in valids) {
            var check = valids[i];
            if (!checkService[check](val)) {
                $this.addClass("has-error");
                $this.data("errorMsg", "errorMsg_" + check);
                break;
            }
            $this.removeClass("has-error");
        }
    });
};
原文地址:https://www.cnblogs.com/evaxtt/p/9679631.html