1 回答
TA贡献1780条经验 获得超3个赞
在 JS 中,你可以使用像这样的正则表达式
(\w+)=(?:\[([^\][]*)]|'([^']*)')
请参阅正则表达式演示。
细节
(\w+)
- 第 1 组:一个或多个字字符=
- 一个等号(?:\[([^\][]*)]|'([^']*)')
- 任何一个\[([^\][]*)]
-[
,组2:比其他任何0+字符[
和]
再]
|
- 或者'([^']*)'
-'
, 第 3 组:除'
,之外的任何 0+ 个字符'
一个JS演示:
var strs = ["{type='OGONE'}", "{type=['OGONE'], period=['2018','2019']}", "{type=['OGONE'], period='2018', names=['yoeunes']}", "{type='OGONE', period=['2018','2019'], names=['sara','hamza'], ages=[20, 21]}]"];
var rx = /(\w+)=(?:\[([^\][]*)]|'([^']*)')/g;
for (var s of strs) {
var results=[], m;
console.log("STRING:", s);
while(m=rx.exec(s)) {
if (m[2]) {
results.push([m[1], m[2]]);
} else {
results.push([m[1], m[3]]);
}
}
console.log("RESULTS:", results);
}
添加回答
举报