Je veux accepter un numéro qui ne commence pas avec zéro mais que les valeurs ultérieures peuvent être zéro. J'utilise var.replace (/ [^ 1-9] / g, ''); qui ne me permettent pas d'entrer 0 du tout.
valide: p> invalide: p>
3 Réponses :
Si vous souhaitez vérifier si la valeur de la première valeur n'est pas zéro, vous pouvez simplement faire un substrateur: Si vous voulez tous les zéros de premier plan remplacés: P > le Si vous voulez tous les zéros de premier plan avant un chiffre ( le Si vous voulez obtenir le premier chiffre après les zéros: Le caractère Je trouve cela utile à Définir ce que je veux dans le texte: p> qui aboutit à p>
^ code> signifie 'chaîne commence par ", puis" un ou plusieurs "( + code>) zéros. P>
\ d code>) remplacé: p> ^ code> signifie "chaîne commence par", puis "un ou plusieurs" ( + code>) zéros. p>
^ code> signifie "début de chaîne". Vous dites qu'il pourrait être 000001 code>, le 1 code> n'est pas au début de la chaîne, de sorte que ne correspondra jamais. P>
[1-9] code> li>
^ code>) sup> avec un ou plusieurs ( + code>) sup> zéros -> ^ 0 + code> li>
ul> ^ 0 + [1-9] code>.
Nous voulons seulement stocker le chiffre, nous nous placons donc dans un groupe: ^ 0 + ([1-9]) code> p> const examples = [
'123', // no starting zeroes
'0123', // match
'000123', // match
'132000123', // no matching zeroes, dont match the end either!
];
console.log(examples.map(function (example) {
const matches = example.match(/^0+([1-9])/);
return example + ' -> ' + (matches !== null ? matches[1] : 'no match!');
}));
J'ai entré (/ [^ 1-9] + ([1-9]) / g, ''); car mon cas est-il juste?
Je vous suggère de lire mon post à nouveau :) Regex est délicate. Vous avez maintenant "DOIT commencer avec 1-9, au moins sur le personnage. Puis capturer [1-9] pour faire quelque chose avec elle
Je pense que vous avez mal compris la question. Ils veulent rejeter des nombres qui commencent à zéro.
Merci, j'ai mis à jour ma réponse. Juste la réponse originale, pourrait aussi bien ajouter quelques saveurs :)
L'évacuation Ainsi, la regex finale ressemblera à: Ceci correspondra à tout numéro positif non nul, à condition que la chaîne entière. p>
Vous pouvez valider automatiquement les entrées de formulaire avec cette regex. p>
\ d code> correspond à n'importe quel chiffre de 0 à 9.
Puisque vous avez dit que le nombre ne doit pas commencer par zéro, nous pouvons commencer par écrire [1-9] code>. P>
/ ^ [1-9] \ d * $ / g code>. p>
Salut. Votre réponse ne fonctionnera pas à cause de la même erreur OP. Vous le forcez à commencer par un [1-9] code>, mais il ne correspond pas s'il commence par un ou plusieurs zéros: regex101.com/r/10icr7/1
Je pensais que cela dit ne commence pas avec 0 mais peut avoir 0 plus tard sur
Vous pouvez utiliser un lookahead négatif pour être sûr que le 1rst chiffre n'est pas zéro:
p>
var test = [
'0123',
'000001',
'abc',
'123',
'102030',
];
console.log(test.map(function (a) {
return a + ' :' + /^(?!0)\d+$/.test(a);
}));
Plus de contexte (code) s'il vous plaît
en utilisant l'expression dans la directive - INPUTVALUE.REPLACE (/ [^ 0-9] / G, ''); @Felixschildmann
Veuillez modifier votre question et ajouter des numéros valides et invalide.