我面临着一个特殊的问题。对于我的REST API,我需要验证手机号码是10位数。但是当我执行JSON.stringify时,它显示长度为12。
var num = req.body.phone;
console.log(num);
console.log((JSON.stringify(num)).length);
console.log((JSON.stringify(num)).length==10);
输出:
1111111111
12
10
答案 0 :(得分:3)
请勿使用JSON.stringify
将数字转换为字符串。只需添加一个空字符串:
var num = 1234,
str = num + '';
console.log(str, str.length); // "1234", 4
或者,如果您愿意,请使用.toString()
:
var num = 1234,
str = num.toString();
console.log(str, str.length); // "1234", 4
或者:
var str = String(1234);
console.log(str, str.length); // "1234", 4
回答标题中的问题:
JSON.stringify
不在号码上调用时添加任何特殊字符。它只是将数字转换为字符串:
var str = JSON.stringify(1234);
console.log(str, str.length); // "1234", 4
您输入中可能还有一些额外的字符,而您却缺少这些字符。或者,您很可能已经<{1}} 输入已经一个字符串。在这种情况下,它会添加一组额外的引号:
stringify
答案 1 :(得分:0)
你真正做的是将字符串加强化。
在您的表单中,inputfield包含值作为字符串,而不是整数。
因此,如果您的手机价值类似于"123"
而非123
。
JSON.stringify现在正在做的是将“123”打包到字符串""
中。结果就是:""123""