Je cherchais une regex pour le prix, mais je n'ai pas trouvé d'exemple complet.
J'ai ce code: mais il doit être amélioré:
La partie dollar doit être de 1 à 3 chiffres de long et ne devrait pas commencer par "0" (comme 01.548),
Aucun autre caractère ne devrait être autorisé dans le prix total, autrement que les chiffres et «.»
Il doit y avoir exactement 3 chiffres après '.'
Les valeurs zéro ne doivent pas être autorisées aussi, comme 00.000 p> p>
3 Réponses :
Une option consiste à utiliser la vérification de la lunette négative s'il n'y a pas de zéros ou plus au début suivi d'un chiffre 1-9 ou que l'ensemble de la correspondance ne constitue que des zéros et des points.
const pattern = /^(?!0+[1-9]|[0.]+$)\d{1,3}\.\d{3}$/;
["01.548",
"12",
"0.0000",
"12.000",
"12.001",
"1.100",
"1.110",
"0.534"
].forEach(s => console.log(s + ": " + pattern.test(s)));
12.000 devraient correspondre
@Roland je vois, j'ai mis à jour le motif.
sympa, mais 0,000 ne devrait pas correspondre
@Roland OK, la mise à jour ne correspond plus à cela.
Qu'en est-il de la solution non-regex?
ou p>
^ ([1-9] [0-9] {0,2} | 0) \. (?! 000) ([0-9] {3}) | ([1-9] [0-9] {0,2}) \ 00 $ code> devrait faire le tour. P>
Selon un commentaire sur une autre réponse, "12.000 devraient correspondre"
Les décimales devraient-elles être facultatives?
Qu'en est-il de
1.100 code> ou1.110 code>?Est
0.534 code> valide?1.100, 1.110 et 0.534 sont des prix valides
/ ^ ([1-9] [0-9] * | 0) \. (?! 000) ([0-9] {3}) $ / code> devrait faire le tour.Donc
1.000 code> est valide ou invalide?Pouvez-vous ajouter l'exemple et la valeur attendue?
Qu'en est-il de
2 code>?Voter à fermer comme "besoin de détails ou de clarté". Il y a beaucoup trop de trous dans votre question qui ont suscité plusieurs questions sans réponse. Pour une référence future, vous devriez être attentif aux commentaires.
@MONKEYZEUS 2 n'est pas valide, comme je l'ai dit en question- "Il doit y avoir exactement 3 chiffres après". " "
Oui, vous avez dit qu'il doit y avoir trois chiffres après une période, mais cela ne signifie pas que les décimales sont nécessaires car j'ai demandé dans mon premier commentaire.
@Monkeyzeus Désolé, je suppose que doit être! = Obligatoire
Eh bien, vous n'avez dit que trois chiffres sont nécessaires après la décimale. Vous n'avez pas indiqué que la décimale elle-même est requise. Une grande partie de votre phrase de votre question est ambiguë. Considérons ces deux déclarations:
trois chiffres doivent suivre la décimale si elle existe code> contreune décimale est toujours requise avec trois chiffres après code>. 5 réponses différentes (2 supprimées) ont été postées et modifiées à plusieurs reprises en raison des ambiguïtés présents dans votre question. Je suis surpris que cela ne soit pas soigné plus tôt.