【问题标题】:Using regex to validate JSON in JavaScript在 JavaScript 中使用正则表达式验证 JSON
【发布时间】:2020-08-12 19:18:39
【问题描述】:

我得到了一个简单的 JSON,可以从一些正则表达式测试中受益

{
    "Name": "Ingemar Stenmark",
    "personalNumber": "197304211770",
    "id": "069234f2-771c-415a-aa5a-3ca77c74f832"
}

它将被格式化为免换行符 ({"Name": "Ingemar Stenmark", "personalNumber": "197304211770", "id": "069234f2-771c-415a-aa5a-3ca77c74f832"})

有没有什么办法可以在js中使用正则表达式进行测试?

【问题讨论】:

  • 此验证的目的是什么?例如。如果您只是使用JSON.stringify() 生成它,那么为什么要验证它呢?此外,它究竟什么时候会失败验证,什么时候会成功?
  • 正则表达式对于所谓的“常规语言”来说是一个很好的工具。 JSON 具有递归语法,因此 regex 不是一个很好的工具(或 HTML 或递归类别中的任何其他内容)
  • 您要测试每个“人员”信息的值的格式吗?
  • @PeterB JSON 正在发送到另一个系统,到达时可能需要进行一些验证。
  • 如果您只想测试这些值,您可以遍历这些值并使用正则表达式来测试它们中的每一个。与对整个对象进行字符串化并使用一个大的正则表达式进行测试相反,这会使事情变得更加复杂。

标签: javascript json regex


【解决方案1】:

它需要是一个字符串,您才能对其运行正则表达式测试。

但是一旦它是一个字符串,你可以使用 js 全局 RegExp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp 创建一个正则表达式并使用 RegExp test 方法:

const json = {
    "Name": "Ingemar Stenmark",
    "personalNumber": "197304211770",
    "id": "069234f2-771c-415a-aa5a-3ca77c74f832"
};

const jsonStr = JSON.stringify(json);
const regex = RegExp(<regex here>);

console.log(regex.test(jsonStr));

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 1970-01-01
    • 2015-03-19
    • 2014-02-08
    • 1970-01-01
    • 2013-08-24
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多