找出非負整數
有一串整數數字。
建立一個正規表示法,僅搜尋非負數(允許零)。
使用範例
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