查找非负整数
有一串整数。
创建一个正则表达式,只查找非负数(允许零)。
使用示例
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