javascript - 从对象属性中删除双引号,除非以数字开头

标签 javascript json regex

我已经用谷歌搜索并浏览了堆栈溢出问答,但没有找到这个确切的场景。我有一个像这样的对象:

props: {
  "label": "1rem",
  "text3": "1rem",
  "text2Button": "1rem",
  "1": "1rem",
  "5spacing": 2
}

我正在使用此正则表达式模式来捕获对象属性名称并根据simplified version of another answer删除双引号。 :

/"([^"]+)":/g

这很好用,但我希望数字保留双引号,所以我将其更改为:

/"([^"0-9]+)":/g

但是,这仅匹配 "label" 并且任何带有数字的属性都会被排除。我明白为什么会发生这种情况,我不明白的是如何匹配其中包含数字的属性,但排除那些以数字开头的属性。

所需的正则表达式模式将仅匹配 "label""text3""text2Button",以便我可以转换对此表示反对:

props: {
  label: "1rem",
  text3: "1rem",
  text2Button: "1rem",
  "1": "1rem",
  "5spacing": 2
}

(我无法弄清楚如何将排除 ^ 与字符串 ^ 的开头结合起来。我也无法弄清楚添加 | 运算符,或者如果这是正确的方法。)

最佳答案

您的模式不起作用,因为 [^"0-9]+ 要求所有字符既不是 " 也不是数字,而您只想确保第一个字符不是数字。

您可以使用以下模式:

/"([^0-9][^"]*)":/g

Demo .

关于javascript - 从对象属性中删除双引号,除非以数字开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58380179/

相关文章:

json - Restkit JSON ios - putObject - 发送类型信息

Javascript 使用 JSON 将对象推送到 cookie

python - 如何使用 sub() 匹配多行模式?

java - 匹配不以日期开头的行

javascript - Mongo 集合在 Meteor 前端未定义

javascript - 通过 Javascript 继承 CSS 值

javascript - 如果以空格开头或结尾,则正则表达式匹配

javascript - JQuery 维恩图点击功能不起作用

C# 在 JSON 对象中序列化 JSON 对象

java - 用于限制末尾 _ 的正则表达式