回到课程

找到非负整数

这里有一个由整数组成的字符串。

创建一个正则表达式来找出所有的非负整数(包括 0)。

使用示例:

let 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

正如我们所看到的,它从 -18 中配到了 8。要排除这种情况,我们需要确保正则表达式要从一个数的开头开始匹配数字,而不是从另一个(不匹配的)数字的中间开始进行匹配。

我们可以通过指定另一个否定的后瞻断言来实现这一点:(?<!-)(?<!\d)\d+。现在 (?<!\d) 确保匹配不会从另一个数字之后开始进行匹配了,这正是我们所需要的。

我们也可以把它们合并成一个后瞻断言:

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

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

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