返回課程

找出非負整數

有一串整數數字。

建立一個正規表示法,僅搜尋非負數(允許零)。

使用範例

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