Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Regex:Extract";关键词:价值;(无分隔符) 您能否仅用一个正则表达式提取这些“key:value”对?_Javascript_Regex_String - Fatal编程技术网

Javascript Regex:Extract";关键词:价值;(无分隔符) 您能否仅用一个正则表达式提取这些“key:value”对?

Javascript Regex:Extract";关键词:价值;(无分隔符) 您能否仅用一个正则表达式提取这些“key:value”对?,javascript,regex,string,Javascript,Regex,String,结果我想: "a" => "xyz" "b" => "pqr st" "c" => "lm no p" 我的尝试(使用两个正则表达式) 我得到的结果是: "a" => "xyz " "b" => "pqr st " "c" => "lm no p" 那么,这只能用一个正则表达式完成吗? 使用正则表达式模式/(\w+):\s*([^:]+)(?=\s |$)/g 请参见 要修剪空白字符,请使用regex模式 请参见 请参见您可以尝试此功能 var

结果我想:

"a" => "xyz"
"b" => "pqr st"
"c" => "lm no p"

我的尝试(使用两个正则表达式) 我得到的结果是:

"a" => "xyz  "
"b" => "pqr st "
"c" => "lm no p"
那么,这只能用一个正则表达式完成吗?

使用正则表达式模式
/(\w+):\s*([^:]+)(?=\s |$)/g

请参见

要修剪空白字符,请使用regex模式

请参见

请参见

您可以尝试此功能

var s = 'a: xyz   b:  pqr st  c: lm no p';
var r = /(?:\s|^)(\w+):\s*(.*?)(?=\s+\w+:|$)/g;
var m;

while ((m = r.exec(s))) {
    console.log('"' + m[1] + '" => "' + m[2] + '"');
}
正则表达式:


不,b中没有“st”或c中没有“p”。@GrantShield-再次点击演示链接。为我工作@GrantShield-我已经发布了一个更新版本,可以修剪空格字符,但是如果密钥超过一个字符,它就不起作用了。太棒了Ω超级!非常感谢。几乎完美,谢谢!是否仍要修剪值中的空白?
/(?:(?!(?:a | b | c):)+\w/g
结尾的\w将修剪空白。此选项允许多字符键(这很好!),但某些值之前有空白。可以修剪吗?
/(?:\s| ^)(\w+::\s*(.*)(=\s+\w+:|$)/g错误!-1分钟前,我在上面的评论中发布了正确的代码。用那个!这一个似乎没有捕获任何组。
"a" => "xyz  "
"b" => "pqr st "
"c" => "lm no p"
/(\w+):\s*([^:]*\S)\s*(?=\w+:|$)/g
 /\b(\w+):\s*([^:]*\S)\b\s*(?=\w+:|$)/g
var s = 'a: xyz   b:  pqr st  c: lm no p';
var r = /(?:\s|^)(\w+):\s*(.*?)(?=\s+\w+:|$)/g;
var m;

while ((m = r.exec(s))) {
    console.log('"' + m[1] + '" => "' + m[2] + '"');
}
/(?:.(?!(?:a|b|c):))+\w/g