layui校验字符串是否为JSON格式

代码速递

在表单元素上加上 lay-verify="" 属性值,例如:

<input type="text" lay-verify="required|jsonSyntax">

扩展表单自定义验证规则 jsonSyntax

form.verify({
    jsonSyntax: function (str) {
        if (typeof str == 'string') {
            try {
                var obj = JSON.parse(str);
                if (typeof obj === 'object' && obj) {
                    return false;
                } else if (str === '""') {// ""
                    return '请输入非空字符串!';
                }
            } catch (e) {
                var group = (''+e).match(/SyntaxError: Unexpected token (.+) in JSON at position ([0-9]+)/i);
                if (group && group[1] && group[2]) {
                    return 'JSON语法错误:JSON字符串位置' + group[2] + '出现意外的字符' + group[1];
                } else if ((''+e) === 'SyntaxError: Unexpected end of JSON input') {
                    if (!str.startsWith('"')) {
                        return 'JSON语法错误:没有以}或者]结尾';
                    }
                }
            }
        }
        return 'JSON语法错误,请检查!';
    }
});

因为通常捕获到的异常打印出来的结果是

SyntaxError: Unexpected token d in JSON at position 0

我这里把它用正则表达式提取出了 出错位置出错字符 信息,并改为中文。

layui 表单自定义验证:https://www.layui.site/doc/modules/form.html#verify
js判断字符串是否为JSON格式【最简单的方法】
示例:js使用正则表达式group来提取字符串中的数据

posted @ 2022-04-27 16:11  极客子羽  阅读(261)  评论(0编辑  收藏  举报