Forum Clubic

RegExp différence entre IE et FF

Bonjour,
Je me casse la tête avec les expressions régulières.
J’ai cette expression (8 caractères avec au moins une minuscule et au moins une majuscule).

^(?=.[a-z])(?=.[A-Z]).{8}$

voici mes tests :


<?
$regexp="^(?=.*[a-z])(?=.*[A-Z]).{8}$";
$value="aAaaaaaa";
echo "<br>en php =".preg_match("/".$regexp."/",$value);
?>
<script type="text/javascript">
	var regM = new RegExp("<?=($regexp)?>");
	document.write("<br>en js test1 ="+regM.test("<?=$value?>"));
	regM = new RegExp(/<?=($regexp)?>/);
	document.write("<br>en js test2 ="+regM.test("<?=$value?>"));
</script>

En résultat sous Firefox (tout est ok):
en php =1
en js test1 =true
en js test2 =true

En résultat sous IE (6) :
en php =1
en js test1 =false
en js test2 =false

Mon expression est-elle bonne ? (en général, en php, preg_match() n’accepte pas les mauvaises expressions ?)
Si oui, Que se passe-t-il sous IE ?

Merci d’avance

Quelqu’un m’a poster une réponse sur un autre forum :
“Les lookahead ne sont supportés que depuis Javascript 1.5 alors que IE6 utilise la 1.3, il va te falloir trouver une autre façon de faire …”
Fallait savoir !

Le problème c’est que ton code est bon pour les navigateurs récent IE8, firefox, opéra safari etc…
Pour IE6, tu devra faire un code spécial, et incité tes visiteurs a mettre a jour leur navigateur.