So, I was interested to find that JSON.stringify reduces a RegExp to an empty object-literal (fiddle):
JSON.stringify(/^[0-9]+$/) // "{}"
Is this behavior expected? I realize that a RegExp is an object with no properties to serialize. That said, dates are objects too; yet JSON.stringify() manages to produce a meaningful string:
JSON.stringify(new Date) // "2014-07-03T13:42:47.905Z"
I would have hoped that JSON would give RegExp the same consideration by using RegExp.prototype.toString().
Yes, because there’s no canonical representation for a RegExp object in JSON. Thus, it’s just an empty object.
edit — well it’s 2018 now; the answers suggesting solutions using
.toJSON()etc are probably fine, though I’d add the method to the prototype withand so on. That ensures that the function name isn’t enumerable, which makes the monkey-patch somewhat more hygienic.