Bonjour,

Je viens de développer une expression régulière qui me permet de faire un isFloat : vérifier si un nombre est un réel qui soit de la forme "0.154" ou "155" ou "12.4" et non pas "1." ou "1.454.4" ou "12aaaa" etc.

L'expression est testée avec succès grâce à ce site très pratique.

Une fois implémenté dans une page HTML, quand j'effectue le test ci-dessous sous Firefox ou Opera, j'obtiens un résultat étrange : true, false, true, false
alors que sous Internet Explorer, le résultat semble tout à fait convenable (pour une fois !) car j'obtiens des true.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<script language="javascript">
String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g,"");
}
String.prototype.isFloat = function() {
 var regEx = /^\d+([\.]\d+)?$/gi;
 return regEx.test(this.trim());
}
var t="125", i=0;
alert((++i)+") "+t+" "+(t.isFloat()));
alert((++i)+") "+t+" "+(t.isFloat()));
alert((++i)+") "+t+" "+(t.isFloat()));
alert((++i)+") "+t+" "+(t.isFloat()));
alert((++i)+") "+t+" "+(t.isFloat()));
 
</script>
Avez-vous une idée du problème ? Pourtant ce sont les mêmes appels répétés ! Ca devrait donner des résultats identiques !
Une mauvaise syntaxe ? Un bug FF / Opera ?

Merci d'avance !
FB