如何正则化冒号和空格之间的一切

How to regex everything between colon and space?

本文关键字:之间 空格 正则化      更新时间:2023-09-26

我有这个字符串

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-18SWDC WD2500YS-18S在一起。

您必须使用键不包含空格的事实,并提前检查后面的内容。

/([^'s:]+):'s*([^:]+?)(?='s+[^'s:]+:|'s*$)/g

此解决方案不依赖于前看或后看,并利用浏览器的内置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"
} 

试试/([^:]+):'s?([^:]+)(?:'s|$)/g - regex101