jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
14 mars 2004 à 14:18
Doombilbo
Messages postés5Date d'inscriptionmercredi 28 novembre 2001StatutMembreDernière intervention 1 février 2008
-
11 mai 2004 à 11:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Doombilbo
Messages postés5Date d'inscriptionmercredi 28 novembre 2001StatutMembreDernière intervention 1 février 2008 11 mai 2004 à 11:51
thx Fabrice c une bonne mise en jambe des expressions régulières.
en + c vraiment utile pour convertir des variables de querystring etc.
bon boulot :)
cs_Domilo
Messages postés32Date d'inscriptionjeudi 31 janvier 2002StatutMembreDernière intervention22 février 2005 3 mai 2004 à 09:43
Bonjour,
IsNumeric est pas mal, mais ne dira pas si le nombre est de type entier. Donc à l'affectation à la variable entier, un arrondi sera fait "à l'insu de ton plein grès" ! (ce qui pourrait-être génant)
^[0-9]+[0-9]*$ permet de reconnaitre les entiers POSITIFS, et peut, je croie, être simplifié en ^[0-9]+$
Si vous voulez repérer les positifs et NEGATIFS il me semble que feront l'affiare :
- ^-?[0-9]+$
- ^[-+]?[0-9]+$ (si le positif peut être précédé d'un plus "+")
Si vous voulez repérer un nombre positif à 5 digits au maximum (< 100 000)
^[0-9]{1,5}$
Je vous conseil le logiciel Expresso (gratuit) pour pouvoir maitriser les RegEx...
A+
Dom.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 2 avril 2004 à 21:02
Si c'est vrai :p
Mais moi ce qu'il m'a plus c'est l'utilisation des RegExp, je me suis servis de ce code dans une classe que j'ai nommé validation, qui me permet de tester si c'est un integer un decimal mais aussi une adresse mail ...
Je vais peut etre la mettre ce soir mais je l'ai pas encore commenté ...
PatriceVB
Messages postés562Date d'inscriptiondimanche 16 décembre 2001StatutModérateurDernière intervention26 décembre 2007 2 avril 2004 à 20:34
euh...
c pas pareil que ça ?
dim truc as string
if isnumeric(truc) then
'c du numerique
else
' c pas du numerique
end if
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 14 mars 2004 à 14:18
Pas mal mais un peu trop general, les integer sont compris entre -2^31 et 2^31 -1, or tu ne geres pas les depassements de capacité ni les négatifs donc voici une source qui gere les integers
Public Function isInteger(ByVal _Value As String) As Boolean
Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[-]?0*\d{1,10}$")
If objIntPattern.IsMatch(_Value) = True Then
If CType(_Value, Decimal) <= 2 ^ 31 - 1 And CType(_Value, Decimal) >= 2 ^ 31 Then
Return objIntPattern.IsMatch(_Value)
End If
Else
Return False
End If
End Function
Le regexp accepte les nombres négatifs néglige les 0 qu'il y a devant le nombre et n'accepte pas plus de 10 chiffres car 2^31=2 147 483 648
J'ai comparé cette méthode avec celle ci :
Try
i = CInt(s)
Catch ex As Exception
'C'est pas un integer
End Try
Pour convertir une chaine en integer la premiere fonction est autour de 10% plus rapide mais peut etre optimisé en supprimant la conversion du nombre en decimal pour le comparer à 2^31 via les regexp mais ca ferait une chaine plutot tres compliqué
11 mai 2004 à 11:51
en + c vraiment utile pour convertir des variables de querystring etc.
bon boulot :)
3 mai 2004 à 09:43
IsNumeric est pas mal, mais ne dira pas si le nombre est de type entier. Donc à l'affectation à la variable entier, un arrondi sera fait "à l'insu de ton plein grès" ! (ce qui pourrait-être génant)
^[0-9]+[0-9]*$ permet de reconnaitre les entiers POSITIFS, et peut, je croie, être simplifié en ^[0-9]+$
Si vous voulez repérer les positifs et NEGATIFS il me semble que feront l'affiare :
- ^-?[0-9]+$
- ^[-+]?[0-9]+$ (si le positif peut être précédé d'un plus "+")
Si vous voulez repérer un nombre positif à 5 digits au maximum (< 100 000)
^[0-9]{1,5}$
Je vous conseil le logiciel Expresso (gratuit) pour pouvoir maitriser les RegEx...
A+
Dom.
2 avril 2004 à 21:02
Mais moi ce qu'il m'a plus c'est l'utilisation des RegExp, je me suis servis de ce code dans une classe que j'ai nommé validation, qui me permet de tester si c'est un integer un decimal mais aussi une adresse mail ...
Je vais peut etre la mettre ce soir mais je l'ai pas encore commenté ...
2 avril 2004 à 20:34
c pas pareil que ça ?
dim truc as string
if isnumeric(truc) then
'c du numerique
else
' c pas du numerique
end if
14 mars 2004 à 14:18
Public Function isInteger(ByVal _Value As String) As Boolean
Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[-]?0*\d{1,10}$")
If objIntPattern.IsMatch(_Value) = True Then
If CType(_Value, Decimal) <= 2 ^ 31 - 1 And CType(_Value, Decimal) >= 2 ^ 31 Then
Return objIntPattern.IsMatch(_Value)
End If
Else
Return False
End If
End Function
Le regexp accepte les nombres négatifs néglige les 0 qu'il y a devant le nombre et n'accepte pas plus de 10 chiffres car 2^31=2 147 483 648
J'ai comparé cette méthode avec celle ci :
Try
i = CInt(s)
Catch ex As Exception
'C'est pas un integer
End Try
Pour convertir une chaine en integer la premiere fonction est autour de 10% plus rapide mais peut etre optimisé en supprimant la conversion du nombre en decimal pour le comparer à 2^31 via les regexp mais ca ferait une chaine plutot tres compliqué