返回课程

查找非负整数

有一串整数。

创建一个正则表达式,只查找非负数(允许零)。

使用示例

let regexp = /your regexp/g;

let str = "0 12 -5 123 -18";

alert( str.match(regexp) ); // 0, 12, 123

整数的正则表达式是 \d+

我们可以通过在前面加上负向后顾来排除负数:(?<!-)\d+

但是,如果我们现在尝试一下,可能会注意到还有一个“额外”的结果

let regexp = /(?<!-)\d+/g;

let str = "0 12 -5 123 -18";

console.log( str.match(regexp) ); // 0, 12, 123, 8

正如您所见,它匹配了 8,来自 -18。为了排除它,我们需要确保正则表达式从另一个(不匹配)数字的中间开始匹配数字。

我们可以通过指定另一个负向后顾来做到这一点:(?<!-)(?<!\d)\d+。现在 (?<!\d) 确保匹配不会在另一个数字之后开始,这正是我们需要的。

我们也可以将它们合并成一个单独的后顾。

let regexp = /(?<![-\d])\d+/g;

let str = "0 12 -5 123 -18";

alert( str.match(regexp) ); // 0, 12, 123