正则表达式用于检索括号之间的两个变量
Regex to retrieve two variables between brackets
我试图检索两个双括号之间的两个变量。到目前为止,我有这个:
var regex = /'['['s([a-z]+):*'s*(['d])*'s']']/g;
var obj = {};
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
obj[key] = value;
console.log(obj);
});
结果是:
Object {dogs: "2", cats: "1"}
我想要的是:
Object {dogs: "1", dogs: "2", cats: "1"}
对于我的生活,我无法弄清楚为什么狗只显示第二个id。
这是因为对象不能包含具有相同键的多个项目。第二次设置dogs
时,它将覆盖第一个实例。
一些替代解决方案包括创建对象数组:
var regex = /'['['s([a-z]+):*'s*(['d])*'s']']/g;
var arr = [];
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
var obj = {};
obj[key] = value;
arr.push(obj);
console.log(arr);
});
或者使用创建数组对象:
var regex = /'['['s([a-z]+):*'s*(['d])*'s']']/g;
var obj = {};
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
if (obj[key]) {
obj[key].push(value);
} else {
obj[key] = [value];
}
console.log(obj);
});
您的错误不在正则表达式内部,在对象内部。
不能有一个对象具有两个相同的键。
我建议你将数据放入数组中,并在需要时进行迭代:
var regex = /'['['s([a-z]+):*'s*(['d])*'s']']/g;
var arr = [];
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
var obj = {}
obj[key] = value;
arr.push(obj);
});
console.log(arr); // [{dogs:1},{dogs:2},{cats:1}]
由于您不能拥有多个同名的属性,因此我的建议是使用数组来存储不同的值,如下所示;
http://jsbin.com/qiqacifata/1/edit?js,console
var regex = /'['['s([a-z]+):*'s*(['d])*'s']']/g;
var obj = {};
var text = '[[ dogs: 1 ]] [[ dogs: 2 ]] [[ cats: 1 ]]';
var module = text.replace(regex, function (match, key, value) {
if(!obj[key]) {
obj[key] = [];
}
obj[key].push(value);
});
console.log(obj);
结果;
{
cats: ["1"],
dogs: ["1", "2"]
}
相关文章:
- 在HTML包围的javascript中添加两个变量
- 填写表单后替换两个变量
- 用于交换两个变量的 JavaScript 函数
- 使用一个表达式将两个变量分配给相同的值
- 如何添加两个变量而不使其在javascript中连接
- 有可能让两个变量指向同一个对象吗?(javascript)
- 带有两个变量函数的Ajax提交表单
- 将两个变量的值加在一个变量中
- 如何使用javascript获取两个变量的最高值
- 如何从字符串中获取两个变量
- 测试两个变量是否包含一些数据 JavaScript
- 将两个变量从php发送到javascript
- 如何在javascript中计算两个变量的百分比
- 连接两个变量
- Javascript变量没有正确添加两个变量,只是连接
- 如何在客户端验证中验证两个变量规则
- 想要使用document.getelementbyid显示两个变量
- 使用带有两个变量的相同if-else语句
- 我可以用JavaScript声明一个数组中的两个变量吗
- 使用数据库中的两个变量在jqplot中显示图形