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

时间:2016-07-28 14:40:14

标签: javascript regex negative-lookbehind

我有一些足球目标信息如下所示:

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

我想使用javascript来匹配所有数字 not 前面有+符号(本例中为2)。我不知道如何做到这一点,没有负面的看法。

我试过这个:

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

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

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

我正在寻找像这样的结果。请注意,它中没有数字2,因为2前面有+

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

任何指针都表示赞赏。

2 个答案:

答案 0 :(得分:4)

您可以将捕获的组用于结果中所需的值:

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"]

答案 1 :(得分:0)

你可以使用这种模式

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

Demo