Je souhaite valider un numéro à 5 chiffres qui ne doit pas être 00000. Tous les nombres sauf 00000 sont autorisés.
Exemples: 01201, 00001, 21436, 45645 sont des nombres valides et 1, 12, 123, 1234, 00000 sont des nombres non valides.
J'ai essayé avec ^([0-9]{5}[^(0){5}])$
mais ce n'était pas utile.
Toute aide à ce sujet sera très appréciée.
Merci.
Utilisation d'un lookahead positif négatif:
/^(?!0{5})\d{5}$/
/^(?!0{5})\d{5}$/.test('01201') // => true /^(?!0{5})\d{5}$/.test('00001') // => true /^(?!0{5})\d{5}$/.test('21436') // => true /^(?!0{5})\d{5}$/.test('1') // => false /^(?!0{5})\d{5}$/.test('12') // => false /^(?!0{5})\d{5}$/.test('00000') // => false
Pas besoin de lookahead négatif
Demo en direct
function isvalid5(str) { return str != "00000" && /^\d{5}$/.test(str); }
Vous pouvez utiliser un regard négatif:
^(?!0{5})\d{5}$
Le loo négatif à l'avance (?!...)
échouera à l'ensemble de la regex si ce qui est en elle correspond, \d
est un raccourci pour [0-9]
.
Pour les moteurs regex qui ne supportent pas lookahead:
^(0000[1-9]|000[1-9][0-9]|00[1-9][0-9]{2}|0[1-9][0-9]{3}|[1-9][0-9]{4})$