作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象,想将其表示为具有一些附加格式的字符串。
这是我的代码:
// 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/
我是一名优秀的程序员,十分优秀!