Regex (jQuery) pour valider les nombres positifs avec 2 décimales
J'ai besoin de faire correspondre un champ avec la regex à l'aide de jQuery. Actuellement, je suis en utilisant:
onsubmit: function (settings, td) {
//select integers only
var intRegex = /[0-9 -()+]+$/;
var input = $(td).find('input');
var original = input.val();
if (original <= 0) {
Alert('The amount should be bigger than 0');
return false;
}
if (!original.match(intRegex)) {
Alert('Please enter a valid number');
return false;
}
else {
return true;
}
}
Une chaîne comme "abc"
ne passe pas le vérifier. Mais des caractères non valides comme @#$%
ou "/"
faire passer le vérifier, ce qui provoque une erreur dans ma méthode.
Je suis à la recherche pour les regex:
Matches: 1.20, 1, 2.00, 3.1
Ne correspond pas: -1.2, abc, 1/2, $, @#$%
J'ai parcouru la bibliothèque regex, mais si je mets (^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)
à l'intérieur de mon script, j'obtiens une erreur de syntaxe...
OriginalL'auteur shennyL | 2011-12-17
Vous devez vous connecter pour publier un commentaire.
Utilisation:
Qui devrait fonctionner.
Voir le post de modifier, j'ai inclus var initialisation de plus une erreur, j'avais repéré
Merci pour votre aimable et rapide à l'aide!
OriginalL'auteur fge
Voici pourquoi vous avez été d'obtenir des faux positifs avec l'original de votre regex:
La partie que j'ai souligné les formes d'une gamme à partir de l'espace (
U+0020
) à la gauche de la parenthèse (U+0028
), ce qui rend votre regex équivalent à ceci:Si vous souhaitez faire correspondre un trait d'union, vous avez besoin soit de l'échapper avec un backslash ou de le placer au début ou à la fin de la série, comme suit:
Aussi, si par "la bibliothèque regex" tu veux dire RegExLib.com, je ne ferais pas confiance à toutes les regex que j'y ai trouvés. Celui que vous avez posté est un point à souligner:
Tout d'abord, il pourrait avoir été écrit beaucoup plus concise:
Deuxième, il correspond à des chaînes comme
123.
et000000.0000000
, vous ne voulez probablement pas. Si vous voulez vraiment correspondre qu'à des nombres positifs, vous devez vous assurer qu'il y a au moins un non-chiffre zéro dans la chaîne, que ce soit avant ou après le point décimal. Voici une façon de le faire:regex ai tellement de choses à savoir! merci pour le partage 🙂
OriginalL'auteur Alan Moore
Vous êtes les bienvenus.
OriginalL'auteur aefxx