Javascript 用一个正则表达式解析复杂字符串

Javascript 用一个正则表达式解析复杂字符串,javascript,regex,Javascript,Regex,我怎样才能从这根绳子上得到它 genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990 这个 使用一个正则表达式?您不会从一开始就将它们放入数组,但如果顺序始终保持不变,则可以对其进行解析 var str = "genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990"; str = str.replace(/\

我怎样才能从这根绳子上得到它

genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990
这个


使用一个正则表达式?

您不会从一开始就将它们放入数组,但如果顺序始终保持不变,则可以对其进行解析

var str = "genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990";
str = str.replace(/\+/g," ");

//Get first groupings
var re = /genre:\s?(.+)\scast:\s?(.+)\syear:\s(.+)/
var parts = str.match(re)

//split to get them into an array
var genre = parts[1].split(",");
var cast = parts[2].split(",");
var years = parts[3];

console.log(genre);

您不能仅使用正则表达式来完成此操作,因为您正在尝试解析(微小的)语法。

这可以使用一个正则表达式和重载的
replace
函数,并将replace作为第二个参数来完成。但老实说,我必须再使用一个
replace
来去掉加号(
+
)-我用一个空格(
)字符替换它们:


你可以在上找到完整的示例。

为什么它必须只有一个正则表达式?一般来说,你不能,因为有两个级别的结果分组(主题和条目),而且regexp只支持一个级别。我希望有一个优雅的regex:)我只是想知道它是否能顺利完成,顺序不会一直保持不变。事实上,它总是不同于你需要做的部分!
var str = "genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990";
str = str.replace(/\+/g," ");

//Get first groupings
var re = /genre:\s?(.+)\scast:\s?(.+)\syear:\s(.+)/
var parts = str.match(re)

//split to get them into an array
var genre = parts[1].split(",");
var cast = parts[2].split(",");
var years = parts[3];

console.log(genre);
var str = 'genre:+Drama,Comedy+cast:+Leonardo+DiCaprio,Cmelo+Hotentot+year:+1986-1990';
str = str.replace(/\+/g, ' ');
var result = str.replace(/(\w+:)(\s?)([\w,\s-]+?)(\s?)(?=\w+:|$)/g, function (m, m1, m2, m3, m4, o) {
    return m1 + ' [' + m3.split(',').join(', ') + ']' + (o + m.length != str.length ? ',' : '') + '\n';
});