首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调整冒号和空格之间的所有内容?

如何调整冒号和空格之间的所有内容?
EN

Stack Overflow用户
提问于 2014-05-22 18:55:05
回答 3查看 290关注 0票数 2

我有这根绳子

代码语言:javascript
复制
product_id:WDC WD2500YS-18S revision:6C07 size(GB):232 state: ONLINE

我需要皈依其他的东西,就像json:

代码语言:javascript
复制
{
  "product_id": "WDC WD2500YS-18S",
  "revision": "6C07",
  "size(GB)": "232",
  "state": "ONLINE"
}

我尝试了这个/([^:]+)/g,但没有工作,因为我需要WD2500YS-18S WD2500YS-18S结合。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-22 19:01:17

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

代码语言:javascript
复制
/([^\s:]+):\s*([^:]+?)(?=\s+[^\s:]+:|\s*$)/g
票数 2
EN

Stack Overflow用户

发布于 2014-05-22 19:10:41

此解决方案不依赖查找头或后置查找,并利用浏览器内置的json解析器来验证输出是否有效。它利用了不包含空格这一事实。所以([^ ]+):会找到一个密钥。我们只是用引号包装键和值,然后让内置的json解析器来完成剩下的工作。

代码语言:javascript
复制
var input = 'product_id:WDC WD2500YS-18S revision:6C07 size(GB):232 state: ONLINE';
console.log(JSON.parse(
  '{' +
  input.replace(/(^| )([^ ]+):/g,'","$2":"').substring(2) +
  '"}'
));

产出:

代码语言:javascript
复制
{
product_id: "WDC WD2500YS-18S",
revision: "6C07",
size(GB): "232",
state: " ONLINE"
} 
票数 2
EN

Stack Overflow用户

发布于 2014-05-22 19:00:28

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23815021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档