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

What's the exact regex to match the proper string?

本文关键字:正则表达式 是什么 字符串      更新时间:2023-09-26

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

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

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

提前致谢

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

/'[[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;

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

var input = "[1212,1212],[1212,11212]";
var result = input.match(/'[[0-9]+,[0-9]+']/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);
}

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

/'['d+,'d+']/g

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