请问这个正则怎么写?

const data={id:12345678,...}
→ data={id:"12345678",...}

具体就是匹配id字段,并给他的值加上引号变成字符串

阅读 2.8k
5 个回答
`const data={id:12345678,...}`.replace(/id:(\d*)/g, 'id:"$1"')
`const data={id:12345678,...}`.replace(/(?<=id:)(\d*)/g, '"$1"')

都可以!

image.png
直接重写下就好了吧

看这个样式,像是要在编辑器里进行查找替换哇。各编辑器支持的正则语法可能会略有差异,下图是 VSCode

Captured.gif

查找 id:(\d+),如果冒号后有可能存在空格,那就 id:\s*(\d+)
替换 id:"$1",其中 $1 表示上面括号中匹配到内容(不同编辑器也有可能是用 \1 来表示的)

正则不太会,只能写出这么个玩意儿了:

data.replace(/(id:\d+)/, (_, c) => `${c.replace(/(\d+)/, (___,  d) => `"${d}"`)}`)

// 说明:
'{id:12345678,...}'
    // 计划直接将 id:12345678 替换成 id:"12345678"
    .replace(
        // 匹配出 id:12345678
        /(id:\d+)/, 
        // replacement函数
        // 详细说明见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace#%E6%8C%87%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0
        (_, c) => 
            // 以同样的方式找到 12345678,并把这一段换成 "12345678"
            `${c.replace(/(\d+)/, (_, d) => `"${d}"`)}`)
新手上路,请多包涵

其实这样也是可以的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题