Regex monnaie de validation
J'ai besoin d'Aide pour devise regex en fonction jQuery.
- Il permet de manière optionnelle signe "$" qu'une seule fois au début.
- Il permet une virgule numérique-groupe-séparateur, mais pas dans le début ou la fin.
- Il permet seulement 2 chiffres arrondis après le point décimal.
- Il permet à un seul point décimal, et non au début ou à la fin.
Valide:
$1,530,602.24
1,530,602.24
Invalide:
$1,666.24$
,1,666,88,
1.6.66,6
.1555.
J'ai essayé /^\$?[0-9][0-9,]*[0-9]\.?[0-9]{0,2}$/i
; il fonctionne très bien sauf qu'il correspond à 1,6,999
.
- Que fais-tu si loin? Quels sont les problèmes avec elle?
- Je suis nouveau sur le jquery je ne sais pas comment écrire fonction regex.Si vous pouvez m'aider ce serait génial
- votre question n'a rien à voir avec jQuery. En JavaScript, vous avez la méthode
String.matches
, par exemplevar str="123.45"; if(str.matches(/YOUR_REGEX/)) alert("match"); else alert("not a match");
Pour le béton expressions régulières de voir les réponses ci-dessous. - @Alex *str.match
- merci, était une faute de frappe. Malheureusement, je ne peux pas modifier le commentaire plus. @user2205924: la méthode est appelée
match
, (pasmatches
). Désolé. - Double Possible de Quelle est La "Meilleure" Monnaie des états-UNIS RegEx?
Vous devez vous connecter pour publier un commentaire.
La RegEx
La RegEx Répartition
(?=.*\d)
^\$?
-?
pour permettre les nombres négatifs[1-9]\d{0,2}
(\d{1,3})
, mais qui permettrait de "0,123"|0
(,\d{3})*
?
avant\.
si vous voulez interdire les numéros commençant par "$."\.\d{1,2}
ou(\.\d{1,2})?
respectivement$
(sans échappement) pour vous assurer qu'il n'y a rien après un nombre valide (comme de 1 000$.00 b)À utiliser les regex, l'utilisation de la chaîne
match
de la méthode et de l'enrober les regex entre deux barres obliques.Exemple D'Utilisation Basique
Démo avec des Cas de Test
JS:
(?=.)^(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(\.[0-9]{1,2})?$
(?=.*?\\d)^\\$?(([1-9]\\d{0,2}(,\\d{3})*)|\\d+)?(\\.\\d{1,2})?$
); qui échoue lorsque l'un des principaux$
est ajouté?^\\$
moyen d'un backslash, qui doit être au début (^) et la fin ($) de votre match... Donc, c'est juste que personnage. Retirez l'une des barres obliques inverses.Ici est l'expression régulière qui doit réaliser pour vous.
Le départ doit être numérique ou signe$.
Il peut y avoir un nombre quelconque de chiffres avec une virgule, mais il doit commencer et se terminer par un chiffre.
Il peut éventuellement être un point décimal ayant deux chiffres après la fin de la ligne.
Ou de l'utilisation de cette fonction
De voir leur fonctionnement: http://jsfiddle.net/znuJf/
1,11,1111.00
parce qu'il correspond à (plusieurs numéros + virgule) et répéter indéfiniment tant qu'il ne se termine pas avec une.[0-9][0-9,]*
signifie un nombre et un nombre de numéros ou des virgules, donc1,,,,1.00
aussi les matchs. Aussi, pourquoi est-il insensible à la casse drapeau utilisé pour les nombres?