【问题标题】:Regex for key value pair键值对的正则表达式
【发布时间】:2017-03-04 11:16:36
【问题描述】:

我有一个正则表达式

(\w+)\s*:((?:\w+[-+*%])*?\w+)$

匹配这样的键值对 -

键:值

key2:value2

但如果键和值在这样的引号内,则正则表达式 ma​​tch 失败 -

“键”:值

"key2":"value2"

可以进行哪些修改以使正则表达式也匹配引号内的键和值?

【问题讨论】:

  • key and value are within paranthesis => 你的意思是引用对吗?
  • 是的。我的意思是引用。
  • 您说“在括号内”(不是“括号内”),但您给出的示例将它们显示在双引号内。无论如何,请不要使用正则表达式来区分对象文字语法。你为什么要这么做?这些字符串是从哪里来的,你想用它们做什么?
  • 是的。我的意思是引用。然后解决你的问题!
  • 那是个错误。解决了问题

标签: javascript regex key-value


【解决方案1】:

您可以在 key-value 对的任一侧使用可选引号,如下所示:

/("?)\b(\w+)\1\s*:\s*("?)((?:\w+[-+*%])*?\w+)\b\3/g

RegEx Demo

注意捕获空字符串或双引号的组("?)。另一方面,我们使用该组的反向引用 \1 来结束报价。

【讨论】:

  • 我已经多次回答了转义引号的问题,但这个问题并没有要求,除非有要求,否则我不会过度设计解决方案。
  • OP 尝试了一个正则表达式并用正则表达式标记它。如果您愿意,请随时发布答案。
  • 你在不必要的争论上浪费时间。 SO不会阻止任何人根据发布者的理解发布解决方案。
  • @torazaburo 这是非常好的建议,但我认为作为单独的答案对 OP(和未来的访问者)可能更有价值?这个答案解决了问题的既定目标,没有表明这种格式支持转义序列。 (当然不能是 JSON,因为允许使用不带引号的键。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 2016-08-28
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多