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来提取字符串中的数据