JavaScript 正则表达式 - 尝试匹配 (5', 78', 80')(90'+2') 中的所有数字 前面没有 +

JavaScript Regex - trying to match all numbers in (5', 78', 80')(90'+2') Not preceded by +

我有一些足球进球信息是这样表示的:

(5', 78', 80')(90'+2')

我想使用 javascript 来匹配所有数字 而不是 前面有 + 符号(在本例中为 2)。我不知道如何在没有负面回顾的情况下做到这一点。

我试过这个:

"(5', 78', 80')(90'+2')".match(/[^+]\d+'/g)

但我在返回的匹配项中得到括号、空格和 '

["(5'", " 78'", " 80'", "(90'"]

我正在寻找类似的结果。注意它里面没有数字 2,因为 2 前面有一个 +

["5", "78", "80", "90"]

不胜感激。

您可以在结果中使用捕获的组作为您想要的值:

var regexp = /(?:\+\d+|(\d+))'/g;
var str = "(5', 78', 80')(90'+2')";
var m;
var result = [];

while ((m = regexp.exec(str))) {
   if (m[1] !== undefined)
      result.push(m[1]);
}
console.log(result);
//=> ["5", "78", "80", "90"]

你可以使用这个模式

(?:[^+]|^)(\d+(\.\d+)?)

Demo