gpt4 book ai didi

javascript - 用于匹配不在数组中的逗号的正则表达式(括在方括号中)

转载 作者:行者123 更新时间:2023-11-29 20:49:10 25 4
gpt4 key购买 nike

我有一个对象,想将其表示为具有一些附加格式的字符串。

这是我的代码:

// stringify object and remove double quotations
let outPut = JSON.stringify(myObject).replace(/"/g, '')

// replace commas with new line character while comma is not part of an array
outPut = outPut.replace(/,/g, '\n') // this line replaces all commas

由于我的对象包含数组并且我想在方括号 [...] 中保留逗号,所以我需要告诉 replace 函数仅在逗号出现时匹配不在括号内。

我怎样才能做到这一点?

示例输入字符串:

{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}

我需要替换除 ["GML", "XML"] 中的逗号之外的所有逗号。

最佳答案

您可以使用以下正则表达式来匹配不在数组中的逗号:

(,)(?![^[]*\])

(关于 regex101 的解释。)

这表示匹配任何逗号,如果它后跟一个右括号,则在该右括号之前有一个左括号。


JS 示例:

outPut = outPut.replace(/(,)(?![^[]*\])/g, '\n');

给出:

"{glossary:{title:example glossary
GlossDiv:{title:S
GlossList:{GlossEntry:{ID:SGML
SortAs:SGML
GlossTerm:Standard Generalized Markup Language
Acronym:SGML
Abbrev:ISO 8879:1986
GlossDef:{para:A meta-markup language
used to create markup languages such as DocBook.
GlossSeeAlso:[GML,XML]}
GlossSee:markup}}}}}"

关于javascript - 用于匹配不在数组中的逗号的正则表达式(括在方括号中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com