Trouver des nombres entiers non négatifs
Il y a une chaîne de nombres entiers.
Créez une expression régulière qui ne recherche que les expressions non négatives (zéro est autorisé).
Un exemple d’utilisation :
let regexp = /your regexp/g;
let str = "0 12 -5 123 -18";
alert( str.match(regexp) ); // 0, 12, 123
L’expression régulière pour un nombre entier est \d+
.
Nous pouvons exclure les négatifs en les faisant précéder du lookbehind négatif : (?<!-)\d+
.
Bien que, si nous l’essayons maintenant, nous remarquerons peut-être un autre résultat “supplémentaire”:
let regexp = /(?<!-)\d+/g;
let str = "0 12 -5 123 -18";
console.log( str.match(regexp) ); // 0, 12, 123, 8
Comme vous pouvez le voir, il correspond à 8
, à partir de -18
. Pour l’exclure, nous devons nous assurer que l’expression régulière commence à correspondre à un nombre qui ne se trouve pas au milieu d’un autre nombre (non correspondant).
Nous pouvons le faire en spécifiant un autre lookbehind négatif : (?<!-)(?<!\d)\d+
. Maintenant, (?<!\d)
garantit qu’une correspondance ne commence pas après un autre chiffre, juste ce dont nous avons besoin.
Nous pouvons également les joindre en un seul lookbehind ici:
let regexp = /(?<![-\d])\d+/g;
let str = "0 12 -5 123 -18";
alert( str.match(regexp) ); // 0, 12, 123