Javascript 仅当后跟某个字符串时才按分隔符拆分

Javascript 仅当后跟某个字符串时才按分隔符拆分,javascript,string,split,Javascript,String,Split,我有一个字符串“值。组件\u类别:monstor\u客户端,维度。池:rpool1,维度。环境:prod,值。错误\u说明:由于输入结束,没有要映射的内容↵ 在[来源:java.io。StringReader@2ef452e5;行:1,列:1],值。事件类别:健康“ 并尝试将其拆分为,仅当其后跟字符串值或维度。因为在中有另一个,;第1行,第1列,我想转义一下 我尝试使用regex.split(/,?(值|维度)。/) 预期产出: [ "values.component_category:m

我有一个字符串
“值。组件\u类别:monstor\u客户端,维度。池:rpool1,维度。环境:prod,值。错误\u说明:由于输入结束,没有要映射的内容↵ 在[来源:java.io。StringReader@2ef452e5;行:1,列:1],值。事件类别:健康“

并尝试将其拆分为
仅当其后跟字符串
维度
。因为在
中有另一个
;第1行,第1列
,我想转义一下

我尝试使用regex
.split(/,?(值|维度)。/)

预期产出:

[
   "values.component_category:monstor_client",
   "dimensions.pool:rpool1", 
   "dimensions.env:pord", 
   "values.error_description:No content to map due to end-of java.io.StringReader@2ef452e5; line: 1, column: 1]", 
   "values.incident_category:health"
]

尤其需要使用前瞻性,例如:
,(?=values | dimensions)


尤其需要使用前瞻,例如:
,(?=values | dimensions)
您可以使用
数组。reduce
String.split()
来实现这一点:

var str=“values.component\u类别:monstor\u客户端,维度。池:rpool1,维度。环境:prod,值。错误\u说明:由于输入结束,没有要映射的内容↵ 在[来源:java.io。StringReader@2ef452e5;行:1,列:1],值。事件_类别:健康”;
var arr=str.split(/,(?=值|尺寸)/);
var结果=arr.reduce((a,val)=>{
var key=val.substring(0,val.indexOf(“:”);
var值=val.substring(val.indexOf(“:”)+1)
a[键]=值;
返回a;
},{});

控制台日志(结果)
您可以使用
Array.reduce
String.split()

var str=“values.component\u类别:monstor\u客户端,维度。池:rpool1,维度。环境:prod,值。错误\u说明:由于输入结束,没有要映射的内容↵ 在[来源:java.io。StringReader@2ef452e5;行:1,列:1],值。事件_类别:健康”;
var arr=str.split(/,(?=值|尺寸)/);
var结果=arr.reduce((a,val)=>{
var key=val.substring(0,val.indexOf(“:”);
var值=val.substring(val.indexOf(“:”)+1)
a[键]=值;
返回a;
},{});

控制台日志(结果)
你自己试过什么?@Rahul我试过
.split(/,?(值|维度)。/)
一样,只有在它后面跟着
值或
维度时,你的正则表达式末尾缺少一个g标志。您的解决方案看起来像我找到了正确的正则表达式
.split(/,(?=values | dimensions)/)
。这对我有用你自己尝试过什么?@Rahul我尝试过
。split(/,?(values | dimensions)。/)
类似于
的split by
仅当它后面跟有
value
dimensions
时,你的正则表达式末尾缺少一个g标志。您的解决方案看起来像我找到了正确的正则表达式
.split(/,(?=values | dimensions)/)
。这对meI有效删除了大括号,对我有效
/,(?=值|尺寸)/
好的,谢谢你的反馈。我更新了答案。请随意将其标记为正确,以指出问题的解决方案。我拆下了大括号,它对我有效
/,(?=values | dimensions)/
好的,谢谢您的反馈。我更新了答案。请随意将其标记为正确,以指出问题的解决方案。