レッスンに戻る

非負の整数を見つける

一連の整数があります。

非負(ゼロは許可)の数だけを探す正規表現を作成してください。

使用例

let regexp = /your regexp/g;

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

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

整数に対する正規表現は\d+です。

否定先行一致を使用して先頭に付け加えることで、負の数を除外できます:(?<!-)\d+

ただし、今試してみると、もう1つの「余分な」結果があることに気付くかもしれません

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)は、一致が別の数字の後に開始しないことを保証します。まさに必要な機能です。

ここではそれらを1つの否定先行一致に結合することもできます

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

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

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