javascript – RegExp的序列化

所以,我有兴趣发现JSON.stringify将一个RegExp简化为一个空的object-literal(fiddle):

JSON.stringify(/^[0-9]+$/) // "{}"

这种行为有望吗?我意识到RegExp是一个没有要序列化属性的对象.也就是说,日期也是对象;然而JSON.stringify()设法生成一个有意义的字符串:

JSON.stringify(new Date) // "2014-07-03T13:42:47.905Z"

我希望JSON通过使用RegExp.prototype.toString()给RegExp同样的考虑.

解决方法:

是的,因为在JSON中没有RegExp对象的规范表示.因此,它只是一个空对象.

编辑 – 现在是2018年;使用.toJSON()等建议解决方案的答案可能还不错,不过我会将方法添加到原型中

Object.defineProperty(RegExp.prototype, "toJSON", {
  value: RegExp.prototype.toString
});

等等.这确保了函数名称不可枚举,这使得猴子补丁更加卫生.

上一篇:字符串只截取小数后n位,不做四舍五入


下一篇:JSON:结构化数据格式