Comment faire correspondre également des nombres négatifs avec cette expression régulière? Cette expression régulière fonctionne bien avec des valeurs positives, mais je veux qu'elle autorise également les valeurs négatives, par exemple -10, -125,5, etc.
^[0-9]\d*(\.\d+)?$
Merci
Réponses:
Vous devez ajouter un trait d'union facultatif au début en ajoutant
-?
(?
est un quantificateur signifiant une ou zéro occurrence ):^-?[0-9]\d*(\.\d+)?$
Je l'ai vérifié dans Rubular avec ces valeurs:
10.00 -10.00
et les deux correspondaient comme prévu.
la source
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
Quelques exemples d'expressions régulières:
Entiers positifs :
Entiers négatifs :
Entier :
^-?\d+$
Nombre positif :
^\d*\.?\d+$
Nombre négatif :
^-\d*\.?\d+$
Nombre positif ou nombre négatif :
^-?\d*\.{0,1}\d+$
Numéro de téléphone :
^\+?[\d\s]{3,}$
Téléphone avec code :
^\+?[\d\s]+\(?[\d\s]{10,}$
Année 1900-2099 :
^(19|20)[\d]{2,2}$
Date (jj mm aaaa, j / m / aaaa, etc.):
^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
IP v4 :
^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
la source
Je ne sais pas pourquoi vous en avez besoin en premier
[0-9]
.Essayer:
^-?\d*(\.\d+)?$
Mise à jour
Si vous voulez être sûr d'avoir un chiffre à la place de ceux, utilisez
^-?\d+(\.\d+)?$
la source
^-?\d+(\.\d+)?$
MISE À JOUR (13/08/2014): C'est le meilleur code pour les nombres positifs et négatifs =)
(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}
J'ai essayé avec ces chiffres et fonctionne bien:
-1234454.3435 -98.99 -12.9 -12.34 -10.001 -3 -0.001 -000 -0.00 0 0.00 00000001.1 0.01 1201.0000001 1234454.3435 7638.98701
la source
-*
pour-?
parce qu'il correspond-------------
.Cela n'autorisera un caractère
-
ou+
que s'il est suivi d'un nombre:^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
la source
Cela permettra à la fois des entiers positifs et négatifs
la source
J'ai quelques expériences sur les regex dans django url, qui nécessitaient des nombres négatifs à positifs
^(?P<pid>(\-\d+|\d+))$
Concentrons-nous sur cette
(\-\d+|\d+)
partie et ignorons les autres, ce point-virgule|
signifie OU dans l'expression régulière, alors la valeur négative correspondra à cette\-\d+
partie et la valeur positive dans cette\d+
la source
Cela a fonctionné pour moi, permettant des nombres négatifs et positifs :
\-*\d+
Si vous utilisez C #:
Regex.Match(someString, @"\-*\d+").Value;
la source
Ajoutez simplement un jeton 0 ou 1:
^-?[0-9]\d*(.\d+)?$
la source
Pour un nombre négatif uniquement, c'est parfait.
^-\d*\.?\d+$
la source
^[+-]?\d{1,18}(\.\d{1,2})?$
accepte les valeurs décimales positives ou négatives.
la source
Expression régulière pour nombre, point décimal facultatif, négatif facultatif:
^-?(\d*\.)?\d+$;
fonctionne pour un entier négatif, décimal, négatif avec décimal
la source
^(-?\d+\.)?-?\d+$
Autoriser:
23425.23425 10.10 100 0 0.00 -100 -10.10 10.-10 -10.-10 -23425.23425 -23425.-23425 0.234
la source
Si vous avez ceci
val="-12XXX.0abc23"
et que vous voulez extraire uniquement le nombre décimal, dans ce cas, cette regex (^-?[0-9]\d*(\.\d+)?$
) ne vous aidera pas à y parvenir.c'est le bon code avec la bonne regex de détection:
var val="-12XXX.0abc23"; val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, ''); console.log(val);
la source