【发布时间】:2018-03-12 22:37:50
【问题描述】:
我想从下面的键中提取值:值对作为单个字符串发送:
"var1:value1,var2:value2,var3:value3"
我必须使用 JavaScript,不幸的是,由于正则表达式无法处理变量,我无法使用数组和循环遍历 var1、var2、var3 键...我想知道是否有办法在JS?
见下文:
function onBefore(current, previous)
{
if (current.key != '' || current.key != null)
{
if (current.key.match(/var1/)) {
var assign = current.key.match(/(?:var1:)([^,]+)/)[1];
} else if (current.key.match(/var2/)) {
var assign = current.key.match(/(?:var2:)([^,]+)/)[1];
} else if (current.key.match(/var3/)) {
var assign = current.key.match(/(?:var3:)([^,]+)/)[1];
} else if (current.key.match(/var4/)) {
var assign = current.key.match(/(?:var4:)([^,]+)/)[1];
}
} else {
assign = "None";
}
if (assign != "None") {
current.node = assign;
}
}
}
@revo 感谢您的回答,让其他人受益……这是最终代码:
var str = "keyIcareabout:test3end,something:value,nothing:burger";
var node = "None";
function valueOf(key) {
return (m = (new RegExp("\\b" + key + ":([^,]+)")).exec(str)) !== null ? m[1] : null;
}
if (str != '' || str !== null)
{
var resources = ["keyIcareabout","somethingelseIcareabout"];
for (i = 0; i < resources.length; i++)
{
if (str.match(resources[i]))
{
node = valueOf(resources[i]);
}
}
}
if (node != "None")
{
console.log("Matched " + node + " with node field ");
}
【问题讨论】:
-
用逗号分割,再用冒号分割?
-
由于正则表达式无法处理变量——这是什么意思?
-
好的,所以我提供的示例字符串可能没有对我实际处理的内容做出判断...... xrandom1:xkey1,xrandom2:ykey2,var1:value1,xrandom3:xkey3 yrandom1: ykey1,yrandom2:ykey2,var2:value2,rxandom3:ykey3 如果 var1 存在,我只对 value1 感兴趣......它可能根本不存在......关于正则表达式无法处理变量的评论,即由于“提取” ',我不得不使用不支持变量的 ?:xyz: 参数......或者如果我使用数组变量来替换,至少不起作用
标签: javascript arrays regex