Encontrar enteros no negativos
Tenemos un string de números enteros.
Crea una expresión regular que encuentre solamente los no negativos (el cero está permitido).
Un ejemplo de uso:
let regexp = /tu regexp/g;
let str = "0 12 -5 123 -18";
alert( str.match(regexp) ); // 0, 12, 123La expresión regular para un número entero es \d+.
Podemos excluir los negativos anteponiendo un “lookbehind negativo”: (?<!-)\d+.
Pero al probarlo, notamos un resultado de más:
let regexp = /(?<!-)\d+/g;
let str = "0 12 -5 123 -18";
console.log( str.match(regexp) ); // 0, 12, 123, 8Como puedes ver, hay coincidencia de 8, con -18. Para excluirla necesitamos asegurarnos de que regexp no comience la búsqueda desde el medio de otro número (no coincidente).
Podemos hacerlo especificando otra precedencia “lookbehind negativo”: (?<!-)(?<!\d)\d+. Ahora (?<!\d) asegura que la coicidencia no comienza después de otro dígito, justo lo que necesitamos.
También podemos unirlos en un único “lookbehind”:
let regexp = /(?<![-\d])\d+/g;
let str = "0 12 -5 123 -18";
alert( str.match(regexp) ); // 0, 12, 123