我有这个字符串
product_id:WDC WD2500YS-18S revision:6C07 size(GB):232 state: ONLINE
我需要转换为其他任何内容,例如json:
{
"product_id": "WDC WD2500YS-18S",
"revision": "6C07",
"size(GB)": "232",
"state": "ONLINE"
}
我试过这个/([^:]+)/g
但是没有用,因为我需要 WD2500YS-18S 与 WDC WD2500YS-18S 一起使用。
答案 0 :(得分:2)
您必须使用密钥不包含空格的事实,并使用前瞻检查后面的内容。
/([^\s:]+):\s*([^:]+?)(?=\s+[^\s:]+:|\s*$)/g
答案 1 :(得分:2)
此解决方案不依赖于前瞻或外观,并利用浏览器的内置json解析器来验证输出是否有效。它利用了键不包含空格的事实。所以([^ ]+):
会找到一把钥匙。我们只用引号包装键和值,让内置的json解析器完成剩下的工作。
var input = 'product_id:WDC WD2500YS-18S revision:6C07 size(GB):232 state: ONLINE';
console.log(JSON.parse(
'{' +
input.replace(/(^| )([^ ]+):/g,'","$2":"').substring(2) +
'"}'
));
输出:
{
product_id: "WDC WD2500YS-18S",
revision: "6C07",
size(GB): "232",
state: " ONLINE"
}
答案 2 :(得分:1)
尝试/([^:]+):\s?([^:]+)(?:\s|$)/g
- regex101