当前位置: 首页 > 面试题库 >

RegExp的序列化

郤仰岳
2023-03-14
问题内容

因此,我很感兴趣地发现JSON.stringify将RegExp减少为空的对象字面量(fiddle):

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

这是预期的行为吗?我意识到RegExp是一个没有序列化属性的对象。也就是说,日期也是对象。却JSON.stringify()设法产生了一个有意义的字符串:

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

我本来希望JSON通过使用来给RegExp同样的考虑。RegExp.prototype.[toString()](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString)


问题答案:

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

编辑 -现在是2018年;暗示使用.toJSON()etc的解决方案的答案可能很好,尽管我会将该方法添加到原型中

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

等等。这样可以确保函数名称不可枚举,从而使猴子补丁程序更加卫生。



 类似资料:
  • 正则表达式是描述字符模式的对象。 JavaScript RegExp类表示正则表达式,String和RegExp定义了使用正则表达式在文本上执行强大的模式匹配和搜索和替换功能的方法。 语法 (Syntax) 可以使用RegExp ()构造函数定义正则表达式,如下所示 - var pattern = new RegExp(pattern, attributes); or simply var pat

  • 正则表达式是描述字符模式的对象。 正则表达式通常缩写为“ regex ”或“ regexp ”。 JavaScript RegExp类表示正则表达式,String和RegExp都定义了使用正则表达式在文本上执行强大的模式匹配和搜索和替换功能的方法。 正则表达式可以定义为 - var pattern = new RegExp(pattern, attributes); OR var patter

  • 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。 所

  • import "regexp" regexp包实现了正则表达式搜索。 正则表达式采用RE2语法(除了\c、\C),和Perl、Python等语言的正则基本一致。 参见http://code.google.com/p/re2/wiki/Syntax。 Syntax 本包采用的正则表达式语法,默认采用perl标志。某些语法可以通过切换解析时的标志来关闭。 单字符: .         

  • 本文向大家介绍RegExp 随笔 JavaScript RegExp 对象,包括了RegExp 随笔 JavaScript RegExp 对象的使用技巧和注意事项,需要的朋友参考一下 概述 RegExp 的构造函数创建了一个正则表达式对象,用模式来匹配文本。 有关正则表达式介绍,请阅读JavaScript指南中的正则表达式章节。 语法 文字和构造符号是可能的: /pattern/flags new

  • RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配。 RegExp 的实例用于生成一个正则表达式,利用正则表达式从字符串中匹配想要的内容。 正则表达式不是 JavaScript 的一个子内容,也并非 JavaScript 独有,需要学习正则表达式可以查阅相对应的文献。 1. 创建实例 创建一个 RegExp 实例,只需要将其当作构造函数使用: var regexp = new