Najděte nezáporná čísla
Máme řetězec celých čísel.
Vytvořte regulární výraz, který mezi nimi najde jen nezáporná čísla (včetně nuly).
Příklad použití:
let rv = /váš RV/g;
let řetězec = "0 12 -5 123 -18";
alert( řetězec.match(rv) ); // 0, 12, 123
Regulární výraz pro celé číslo je \d+.
Záporná čísla můžeme vyloučit tak, že před něj umístíme negativní zpětné nahlédnutí: (?<!-)\d+.
Když to však nyní vyzkoušíme, můžeme si všimnout jednoho výsledku „navíc“:
let rv = /(?<!-)\d+/g;
let řetězec = "0 12 -5 123 -18";
console.log( řetězec.match(rv) ); // 0, 12, 123, 8
Jak vidíte, našel i 8 z -18. Abychom to vyloučili, musíme zajistit, že RV nezačne hledat shodu uprostřed jiného (neodpovídajícího) čísla.
Můžeme to udělat uvedením dalšího negativního zpětného nahlédnutí: (?<!-)(?<!\d)\d+. Nyní (?<!\d) zajistí, že shoda nebude začínat po jiné číslici, což je přesně to, co potřebujeme.
Můžeme je také spojit do jediného zpětného nahlédnutí následovně:
let rv = /(?<![-\d])\d+/g;
let řetězec = "0 12 -5 123 -18";
alert( řetězec.match(rv) ); // 0, 12, 123