正規表現のシリアル化 質問する

正規表現のシリアル化 質問する

JSON.stringifyそこで、正規表現を空のオブジェクトリテラルに縮約することに興味を持ちました(フィドル):

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

この動作は想定どおりでしょうか? RegExp はシリアル化するプロパティを持たないオブジェクトであることはわかっています。とはいえ、日付もオブジェクトであり、JSON.stringify()意味のある文字列を生成することができます。

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

JSON が を使用することで RegExp に同様の配慮を与えることを期待していました。RegExp.prototype.toString()

ベストアンサー1

もし興味があるなら、良い回避策があります。現在の動作は正しいとは思いません。たとえば、インスタンスは であり、 JSON 表現もありませんが、Dateのような空のオブジェクトにはシリアル化されません。RegExpobject

RegExp.prototype.toJSON = RegExp.prototype.toString;


// sample
var foo = { rgx: /qux$/ig, date: new Date }

JSON.stringify(foo);
//> {"rgx":"/qux$/gi","date":"2014-03-21T23:11:33.749Z"}"

おすすめ記事