我的字符串有[1212,1212],[1212,11212],...
我想将每个值提取到一个数组中,例如我想要1212,1212
一对并评估一系列步骤。
尝试过/[[0-9],[0-9]]/
,但它没有按照我的意愿完成任务。基本上我是正则表达式的菜鸟,有人可以帮忙。
提前致谢
我的字符串有[1212,1212],[1212,11212],...
我想将每个值提取到一个数组中,例如我想要1212,1212
一对并评估一系列步骤。
尝试过/[[0-9],[0-9]]/
,但它没有按照我的意愿完成任务。基本上我是正则表达式的菜鸟,有人可以帮忙。
提前致谢
您需要对正则表达式进行一些修改才能使其正常工作:
/\[[0-9]+,[0-9]+\]/g
[
,因为它们具有特殊含义。[0-9]
仅匹配一位数字,您需要+
量词来匹配一位或多位数字,因此[0-9]+
.g
提取所有匹配项。然后您可以将所有值提取到一个数组中,如下所示:
var input = "[1212,1212],[1212,11212]";
var pattern = /\[[0-9]+,[0-9]+\]/g;
var result = [];
var currentMatch;
while((currentMatch = pattern.exec(input)) != null) {
result.push(currentMatch.toString());
}
result;
或者,如果您不需要一次连续找到一个匹配项,那么您可以String.match()
像@Matthew Mcveigh 那样使用:
var input = "[1212,1212],[1212,11212]";
var result = input.match(/\[[0-9]+,[0-9]+\]/g);
您需要转义要匹配的文字括号。您还可以使用\d
匹配“任何数字”,使其更整洁。此外,您只匹配一位数字。您需要匹配“一个或多个”(+
量词)
/\[\d+,\d+\]/g
该g
修饰符查找字符串中的所有匹配项,否则仅找到第一个匹配项。
似乎您只需要在逗号前后匹配一个或多个数字,因此您可以执行以下操作:
"[1212,1212],[1212,11212]".match(/\d+,\d+/g)
这将为您提供数组:["1212,1212", "1212,11212"]
要提取对:
var result = "[1212,1212],[1212,11212]".match(/\d+,\d+/g);
for (var i = 0; i < result.length; i++) {
var pair = result[i].match(/\d+/g),
left = pair[0], right = pair[1];
alert("left: " + left + ", right: " + right);
}