繁体   English   中英

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

[英]What's the exact regex to match the proper string?

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

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

试过/[[0-9],[0-9]]/但是没有执行我想要的任务。 基本上我是Regex的菜鸟,请有人帮忙。

提前致谢

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

/\[[0-9]+,[0-9]+\]/g
  1. 您需要转义方括号[因为它们具有特殊含义。
  2. [0-9]仅匹配一位数字,您需要+量词以匹配一位或多位数字,因此需要[0-9]+
  3. 使用全局修饰符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;

或者,如果您不需要一次连续找到匹配项,则可以像@Matthew Mcveigh一样使用String.match()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM