非負の整数を見つける
一連の整数があります。
非負(ゼロは許可)の数だけを探す正規表現を作成してください。
使用例
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