数据校验

对于控制台系统来说,最常用的就是表单了。而表单是需要校验的,有时候写个正则,搞半天都不对,特此记录下来,方便查找。

校验字符串是否是JSON格式

首先,自然想到的是使用JSON.parse(str),但是单纯的使用JSON.parse(str)不能完全检验一个字符串是JSON格式,有许多例外:

1
2
3
4
5
6
7
JSON.parse('"aaa"'); // aaa
JSON.parse('123'); // 123
JSON.parse('true'); // true
JSON.parse('false'); // false
JSON.parse('["a"]'); // ["a"]
JSON.parse('{}'); // {}
JSON.parse('null'); // null

JS数据类型有字符串、数字、布尔值、数组、对象、Null、Undefined,经过测试,使用JSON.parse能够转换成功的有:数字、字符串、布尔值、数组、空对象、null、json,而其中正确的JSON格式有:数组、空对象、json

所以,得出结论,如果JSON.parse能够转换成功,并且转换后的类型为object,且不等于null,那么这个字符串就是JSON格式的字符串。

所以代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function isJSON(str) {
if (typeof str === 'string') {
try {
var obj = JSON.parse(str);
if(typeof obj === 'object' && obj ){
return true;
} else {
return false;
}

} catch(e) {
console.log('error:'+str+'!!!'+e);
return false;
}
}
console.log('It is not a string!')
}

参考资料:https://www.cnblogs.com/lanleiming/p/7096973.html

数字相关

这里经常犯的错误是,\d{0, 7}经常错写成\d{0-7}

非负整数

1
/^\d+$/

正整数

1
/^[1-9]{1}(\d+)?$/g

整数

1
/^-?\d+$/

限制范围的整数

1
2
// 1-100之间的整数
/^([1-9]{1}\d?|100)$/g

数字

1
/^(\.\d+)|(-?\d+(\.\d*)?)$/

限制小数位数

1
/^-?\d+(\.\d{0,7})?$/

字符串相关

大小写字母、数字、下划线、中划线

1
/^[a-zA-Z0-9_-]+$/g

限制字符串长度

1
2
// 只能输入64个字符
/^.{1,64}$/g