Javascript 键值对的正则表达式

Javascript 键值对的正则表达式,javascript,regex,key-value,Javascript,Regex,Key Value,我有一个正则表达式 (\w+)\s*:((?:\w+[-+*%])*?\w+)$ 匹配像这样的键值对- 关键词:价值 键2:值2 但是,如果关键字和值在这样的引号内,正则表达式匹配将失败- “关键”:价值 “键2”:“值2” 可以进行哪些修改以使正则表达式也匹配引号中的键和值?您可以在键-值对的任一侧使用可选引号,如下所示: /("?)\b(\w+)\1\s*:\s*("?)((?:\w+[-+*%])*?\w+)\b\3/g 请注意捕获空字符串或双引号的组(“?)。另一方面,我们使用该组

我有一个正则表达式

(\w+)\s*:((?:\w+[-+*%])*?\w+)$
匹配像这样的键值对-

关键词:价值

键2:值2

但是,如果关键字和值在这样的引号内,正则表达式匹配将失败-

“关键”:价值

“键2”:“值2”


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

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

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


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

键和值在parantasis
=>您的意思是被引用了吗?是的。我的意思是被引用。您说“在括号内”(而不是“parantasis”)但是你给出的例子显示它们在双引号内。无论如何,请不要用regexp来区分对象文字语法。你为什么要这样做?这些字符串从哪里来,你想用它们做什么?是的。我的意思是引号。然后修复你的问题!那是一个错误。修复了问题我已经回答了很多次了转义引号的问题,但这个问题没有要求它,我不会过度设计一个解决方案,除非它是一个要求。OP尝试了一个正则表达式并用正则表达式标记它。如果你愿意,请随意发布一个答案。你在不必要的争论中浪费时间。因此,根据海报的理解,不阻止任何人发布解决方案。@torazaburo这是一个非常好的建议,但我认为作为一个单独的答案,它可能对OP(和未来的访问者)更有价值?这个答案解决了问题的既定目标,没有表明这种格式支持转义序列(当然不能是JSON,因为不带引号的键是允许的)