如何通过正则提取特定字符串

const value = "({id:1}  + {id:2}) * {id:3} + sum({id:5} + {id:6} - {id:7}) - sum({id:8} + {id:9} - {id:10}) "

怎么将{id:1},{id:2},{id:3}提取出来

阅读 2.5k
4 个回答

image.png


提取一个对象出来干嘛,属实离谱。我觉得你要替换

value = "({id:1}  + {id:2}) * {id:3} + sum({id:5} + {id:6} - {id:7}) - sum({id:8} + {id:9} - {id:10}) "

value.replace(/{([^}]+)}/g, function(s, s1){
    return s1.match(/\d+/)
})

你如果真的这么无聊。那我也能行

image.png

value = "({id:1}  + {id:2}) * {id:3} + sum({id:5} + {id:6} - {id:7}) - sum({id:8} + {id:9} - {id:10}) "

value.match(/{([^}]+)}/g)

"({id:1} + {id:2}) * {id:3} + sum({id:5} + {id:6} - {id:7}) - sum({id:8} + {id:9} - {id:10}) ".match(/(?<=id:)\d+/g).map(id => ({id}))

需求不明确,不知道你要什么规则,提供一个提取 {}内内容的做参考

const value = "({id:1}  + {id:2}) * {id:3} + sum({id:5} + {id:6} - {id:7}) - sum({id:8} + {id:9} - {id:10})"

console.log('原始字符串', value)

// => ['{id:1}', '{id:2}', '{id:3}', '{id:5}', '{id:6}', '{id:7}', '{id:8}', '{id:9}', '{id:10}']
console.log('结果', demo(value))

function demo (str) {
  return str.match(/\{id:.*?\}/g)
}

兄弟,你又来了~
要覆盖所有边界情况,分两步处理
1、把字符串中的方法先去掉
let str = value.replace(/\w+\(.*?\)/g, '')
2、再匹配剩下的就都是目标字符了
str = str.match(/{id:\d+}/g)

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