Cela correspond à la normale des flotteurs par exemple 3.14, des abréviations pour la partie décimale par exemple .5 et les nombres entiers par exemple 9 ainsi que les nombres négatifs.
Vous devez mettre l'alternance entre parenthèses, ou bien le début de la chaîne de l'ancre ne seront appliquées avec des entiers, et la fin de la chaîne de l'ancre uniquement avec des décimales. Bonne prise, fixe. Cela fonctionne pour moi, pour l'INT. Merci.
$re ="~ #delimiter
^ # start of input
-? # minus, optional
[0-9]+ # at least one digit
( # begin group
\. # a dot
[0-9]+ # at least one digit
) # end of group
? # group is optional
$ # end of input
~xD";
ce n'accepte que des "123" ou "123.456", pas ".123" ou "14e+15". Si vous avez besoin de ces formes, essayez is_numeric
+1 pour l'étape-par-étape de commentaire Quelle est la D? c'est pour $ se terminant le délimiteur réf sur modificateurs PCRED (PCRE_DOLLAR_ENDONLY) If this modifier is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this modifier, a dollar also matches immediately before the final character if it is a newline (but not before any other newlines). This modifier is ignored if m modifier is set. There is no equivalent to this modifier in Perl. FYI: le x est Étendue: pour supprimer tous les espaces caractères
Les Expressions régulières sont pour la correspondance des modèles de chaîne. Si vous n'êtes pas explicitement après validation de la saisie de la chaîne de format (mais la valeur réelle), vous pouvez également utiliser
filter_var("1.33", FILTER_VALIDATE_FLOAT);
assurez-vous que l'entrée peut être utilisée comme une valeur flottante. Ce sera le retour de FALSE si ce n'est pas un flotteur et le flotteur ou la valeur entière autrement. Tout type de jonglage règles s'appliquent.
Cela ne correspond pas à l'OPs exigences/description: par exemple, il permet 123e-4 oui, comme je l'ai dit: ne l'utilisez lorsque vous êtes après le valeur. Ne pas utiliser si vous êtes après la validation de la format de chaîne de caractères. 123e-4 est encore un flotteur (0.123).
Pourquoi ne pas simplement utiliser is_numeric si vous n'êtes pas expérimenté avec des expressions régulières.
À votre regex: . correspond à tous les caractères, \. correspond à un point. {1} n'est pas nécessaire. Et je n'ai aucune idée de ce que vous essayez de faire avec [^ ... ]. Lire la les expressions régulières tutoriel si vous voulez vraiment utiliser des expressions régulières quelque part dans votre code.
Cela correspond à la normale des flotteurs par exemple
3.14
, des abréviations pour la partie décimale par exemple.5
et les nombres entiers par exemple9
ainsi que les nombres négatifs.Bonne prise, fixe.
Cela fonctionne pour moi, pour l'INT. Merci.
OriginalL'auteur Core Xii
c'est ce que vous êtes à la recherche pour
ce n'accepte que des "123" ou "123.456", pas ".123" ou "14e+15". Si vous avez besoin de ces formes, essayez is_numeric
Quelle est la D?
c'est pour $ se terminant le délimiteur réf sur modificateurs PCRE
D (PCRE_DOLLAR_ENDONLY) If this modifier is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this modifier, a dollar also matches immediately before the final character if it is a newline (but not before any other newlines). This modifier is ignored if m modifier is set. There is no equivalent to this modifier in Perl.
FYI: le x est Étendue: pour supprimer tous les espaces caractèresOriginalL'auteur user187291
Les Expressions régulières sont pour la correspondance des modèles de chaîne. Si vous n'êtes pas explicitement après validation de la saisie de la chaîne de format (mais la valeur réelle), vous pouvez également utiliser
assurez-vous que l'entrée peut être utilisée comme une valeur flottante. Ce sera le retour de
FALSE
si ce n'est pas un flotteur et le flotteur ou la valeur entière autrement. Tout type de jonglage règles s'appliquent.123e-4
oui, comme je l'ai dit: ne l'utilisez lorsque vous êtes après le valeur. Ne pas utiliser si vous êtes après la validation de la format de chaîne de caractères.
123e-4
est encore un flotteur (0.123
).OriginalL'auteur Gordon
Vous pouvez utiliser
is_numeric()
avec la mise en garde qu'il accepte un peu plus qu'en général on le désire (par exemple,1e4
).OriginalL'auteur Pekka 웃
Cette regex:
donnera des résultats:
Cependant, vous devez vérifier la vacuité de l'entrée avant de l'utiliser, parce que la regex également permis de de longueur nulle d'entrée.
OriginalL'auteur Vantomex
Pourquoi ne pas utiliser http://php.net/manual/en/function.is-float.php ? Mais de toute façon, la RegEx serait
^[\d]+(|\.[\d]+)$
amusez-vous!OriginalL'auteur Hannes
Pourquoi ne pas simplement utiliser
is_numeric
si vous n'êtes pas expérimenté avec des expressions régulières.À votre regex:
.
correspond à tous les caractères,\.
correspond à un point.{1}
n'est pas nécessaire. Et je n'ai aucune idée de ce que vous essayez de faire avec[^ ... ]
. Lire la les expressions régulières tutoriel si vous voulez vraiment utiliser des expressions régulières quelque part dans votre code.OriginalL'auteur AndiDog