gpt4 book ai didi

javascript - 用于拆分键值对的正则表达式(键 : value key: "va lue") from a string in Javascript

转载 作者:行者123 更新时间:2023-11-29 18:57:02 26 4
gpt4 key购买 nike

我正在寻找将以下格式的字符串拆分为键值对数组的正则表达式。

"category: Music artist: \"Chris Martin\" album: \"A head full of dreams\" genre: dance"

进入

["category: Music", "artist: \"Chris Martin\"", "album: \"A head full of dreams\"", "genre: dance"]

此外,我如何验证字符串的格式是否正确,例如每个键都有一个值,如果键或值中有空格,则必须用双引号引起来?

我想出了这个来拆分键值对,但它只能在键值用引号括起来并用逗号分隔时才能分隔

/(^[^\s:"]+: *"[^"]+"$)|([^"]+: *[^"]+$)/

最佳答案

您可以获得匹配而不是通过以下正则表达式拆分字符串:

\w+:.*?(?=\s+\w+:|$)

Click for Demo

解释:

  • \w+ - 匹配出现 1 次以上的单词字符,即 a-zA-Z0-9, _
  • : - 匹配 :
  • .*? - 匹配出现次数超过 0 次的任何字符(换行符除外),尽可能少
  • (?=\s+\w+:|$) - 正向前瞻以确保当前位置后跟行尾或 1+ 个空格后跟 1+ 个单词字符后跟 :

代码:

var regex = /\w+:.*?(?=\s+\w+:|$)/gm;
var str = "category: Music artist: \"Chris Martin\" album: \"A head full of dreams\" genre: dance";
var objMatch = regex.exec(str);
var arr = new Array();
while(objMatch!=null)
{
arr[arr.length] = objMatch[0];
objMatch = regex.exec(str);
}
for(var i=0; i<arr.length; i++)
{
console.log(arr[i]);
}

,您可以使用以下正则表达式执行拆分操作:

\s(?=\w+:)

Click for Demo

解释:

  • \s - 匹配空格
  • (?=\w+:) - 正向前瞻以确保当前位置后面必须跟 1+ 个单词字符,然后是 :

代码:

var regex = /\s(?=\w+:)/gm;
var str = "category: Music artist: \"Chris Martin\" album: \"A head full of dreams\" genre: dance";
var arr = str.split(regex);
for(var i=0; i<arr.length; i++)
{
console.log(arr[i]);
}

关于javascript - 用于拆分键值对的正则表达式(键 : value key: "va lue") from a string in Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com