Documente Academic
Documente Profesional
Documente Cultură
La premire dentre elles, vue dans les exemples, consiste utiliser une variable littrale RegExp contenant le
motif. Avec cette mthode, il est possible dutiliser les tiquettes g, i et m, en les plaant directement la fin de
la variable RegExp. Le tableau ci-dessous prcise comment ces tiquettes sont interprtes.
Etiquette Interprtation
g Global / glouton correspondance effectue plusieurs fois
i Insensible la casse des caractres est ignore
m Multi-lignes - ^ et $ permettent didentifier les caractres de fin de ligne
La deuxime mthode repose sur lutilisation du constructeur RegExp. Ce constructeur prend en entre deux
paramtres, puis les compile en un objet RegExp. Le premier paramtre est une chane de caractres. Il convient
dtre prudent lors de la construction de la chane de caractres, car le caractre \ a une signification
diffrente au sein dun objet RegExp et au sein dune variable littrale. Il est gnralement ncessaire de
doubler les backslashes et dspcifier les guillemets. Le deuxime paramtre est une chane de caractres
prcisant ltiquette utiliser. Cette mthode est utile lorsque lexpression rgulire doit tre gnre
lexcution, en utilisant des ressources qui ne sont pas disponibles pour le programmeur. Les proprits dun
objet RegExp sont donnes dans le tableau ci-dessous.
2 Les mthodes
Les expressions rgulires sont utilises avec des mthodes pour chercher, remplacer et extraire des informations
partir de chanes de caractres. Les mthodes suivantes sappliquent en JavaScript :
(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
Nous allons utiliser la mthode exec de cette expression rgulire avec la variable suivante :
var url = http://www.ora.com:80/goodparts?q#fragment;
Si la variable url correspond lexpression rgulire dfinie dans parse_url, alors cela retournera un tableau
contenant des lments extraits partir de la chane de caractres initiale (url).
Considrons le code suivant :
url: http://www.ora.com:80/goodparts?q#fragment
scheme: http
slash: //
host: www.ora.com
port: 80
path: goodparts
query: q
hash: fragment
La figure suivante illustre les traitements effectus par le motif dfini dans parse_url :
1 Cette classe contient aussi des caractres tels que la fin de ligne ou des caractres de contrle qui ne devraient pas tre
identifis ici. En pratique, il faudrait mieux spcifier cette classe, afin dviter les erreurs. En effet, les expressions
rgulires mal crites sont une source frquente derreurs de scurit.
test('1'); // true
test('number'); // false
test('98.6'); // true
test('132.21.86.100'); // false
test('123.45E-67'); // true
test('123.45D-67'); // false
La figure suivante illustre les traitements effectus par le motif dfini dans parse_number :
3 Autres exemples
3.1 Les objets RegExp crs par des expressions rgulires
partagent une mme instance
function test() {
return /a/gi;
}
var x = test();
var y = test(); // x et y sont le mme objet
x.lastIndex = 10;
document.writeln(y.lastIndex); // 10
La mthode exec retourne donc un tableau, mais les lments du tableau ne sont pas tous des correspondances ; il
sagit de la correspondance en cours et les ventuels groupements mmorisants.
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>RegExp string matching</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
window.onload = function() {
var re = /(ds)+(j+s)/ig;
var str = "cfdsJS *(&dsjjjsYJSjs 888dsdsJS";
var resultArray = re.exec(str);
while (resultArray) {
document.writeln(resultArray[0]);
document.writeln(" corresp. suiv. dbute "+re.lastIndex+"<br />");
for (var i = 1; i < resultArray.length; i++) {
document.writeln("sous-chaine de " + resultArray[i] + "<br />");
}
document.writeln("<br />");
resultArray = re.exec(str);
}
}
//]]>
</script>
</head>
<body>
<p></p>
</body>
</html>
b) Modifiez le motif afin quil permette didentifier tous les caractres entre guillemets.
5 Exercice date
Ecrivez le code JavaScript, qui, pour une chane de caractres donne, vrifie si elle contient une date au format
JJ Mois AAAA . Nous faisons lhypothse quune telle date dbute aprs le caractre : .
o Les rsultats du test sont affichs dans un troisime champ du mme formulaire.
8 Ressources utiles
http://www.asciitable.com/
http://regexlib.com/