匹配正确字符串的正确正则表达式是什么?

时间:2013-11-02 11:51:06

标签: javascript regex

我的字符串有[1212,1212],[1212,11212],...

我想将每个值提取到一个数组中,例如我希望1212,1212作为一对,并评估一系列步骤。

尝试/[[0-9],[0-9]]/但是我没有按照我的意愿完成任务。基本上我是正则表达式的菜鸟,有人可以帮忙。

提前致谢

3 个答案:

答案 0 :(得分:2)

您需要对正则表达式进行一些修改才能使其正常工作:

/\[[0-9]+,[0-9]+\]/g
  1. 您需要转义方括号[,因为它们具有特殊含义。
  2. [0-9]只匹配一位数字,您需要+量词匹配一个或多个数字,因此[0-9]+
  3. 使用全局修饰符g提取所有匹配项。
  4. 然后,您可以将所有值提取到这样的数组中:

    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);
    

答案 1 :(得分:1)

您需要转义要匹配的文字括号。您还可以使用\d来匹配“任何数字”,这使其更加整洁。此外,您只匹配一位数。您需要匹配“一个或多个”(+量词)

/\[\d+,\d+\]/g

g修饰符找到字符串中的所有匹配项,否则只找到第一个匹配项。

答案 2 :(得分:1)

您似乎只需要在逗号前后匹配一个或多个数字,因此您可以执行以下操作:

"[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);
}