找到非负整数
这里有一个由整数组成的字符串。
创建一个正则表达式来找出所有的非负整数(包括 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