mrt*_*nyb 6 javascript regex json
这个JSON数据正在动态插入到我正在处理的模板中.我正在尝试从对象列表中删除尾随逗号.
我正在使用的CMS使用Velocity,我还不太熟悉.所以我希望编写一段JavaScript代码来检测最后一个对象(ITEM2)上的尾随逗号并将其删除.是否有一个REGEX,我可以用来检测任何逗号之前的逗号?
[
{
"ITEM1":{
"names":[
"nameA"
]
}
},
{
"ITEM2":{
"names":[
"nameB",
"nameC"
]
}
}, // need to remove this comma!
]
Run Code Online (Sandbox Code Playgroud)
Dmi*_*sky 17
你需要找到,,之后没有任何新的属性,对象或数组.
新属性可以使用引号("或')或任何单词字符(\w)开头.
新对象只能从字符开始{.
新数组只能从字符开始[.
新属性,对象或数组可以放在一堆类似空格的符号(\s)之后.
所以,正则表达式将是这样的:
let regex = /\,(?!\s*?[\{\[\"\'\w])/g;
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
// javascript
let input; // this is the initial string of data
let correct = input.replace(regex, ''); // remove all trailing commas
let data = JSON.parse(correct); // build a new JSON object based on correct string
Run Code Online (Sandbox Code Playgroud)
另一种方法是找到每一个,,之后有一个结束括号.
在这种情况下,结束括号是}和].
同样,关闭括号可能放在一堆类似空格的符号(\s)之后.
因此正则表达式:
let regex = /\,(?=\s*?[\}\]])/g;
Run Code Online (Sandbox Code Playgroud)
用法是一样的.
对于您的具体示例,您可以像这样进行简单的搜索/替换:
,\n]$
Run Code Online (Sandbox Code Playgroud)
替换字符串:
\n]
Run Code Online (Sandbox Code Playgroud)
代码
var re = /,\n]$/;
var str = '[ \n { \n "ITEM1":{ \n "names":[ \n "nameA"\n ]\n }\n },\n { \n "ITEM2":{ \n "names":[ \n "nameB",\n "nameC"\n ]\n }\n },\n]';
var subst = '\n]';
var result = str.replace(re, subst);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8292 次 |
| 最近记录: |