pour chercher / vérifier / remplacer du texte
un langage qui décrit des chaînes de caractères.
/[A-Z][a-z]*/
var s= "une chaîne"; if (s.match(/[A-Z][a-z]*/)) { alert("mot avec majuscule reconnu"); }
var s= "une chaîne"; if (/[A-Z][a-z]*/.test(s)) { alert("mot avec majuscule reconnu"); }
symbole | sens | exemple |
---|---|---|
. | n'importe quel caractère | /.../ = 3 caractères quelconques |
lettre, caractère "normal" | le caractère en question | /abc/ = un "a", puis un "b", puis un "c" |
\n | Passage à la ligne | |
\t | Tabulation | |
\u0000 | caractère unicode | /\u03B2/ pour β |
\w | lettre latine non accentuée | |
\d | chiffre | |
\s | caractère d'espacement (espace, tabulation, passage à la ligne) | |
\W, \D, \S | négation des précédents | |
\\, \*, \+, \. | le "\" permet de "protéger" les caractères spéciaux pour pouvoir les reconnaître | /\.\.\./ reconnaît trois points (comparer avec ci-dessus) |
il suffit de mettre les caractères en question entre les crochets :
[aeiouy]
reconnaît n'importe quelle voyelle
Suite de caractères dans unicode. Exemple [0-9] n'importe quel chiffre
"^" : caractères qui ne sont pas dans l'ensemble.
Exemple [^0-9]
: caractère qui n'est pas un
chiffre.
[-a-z]reconnaît toute lettre minuscule ou "-".
On peut mettre entre crochets plusieurs intervalles et des
caractères isolés : [0-9A-E.]
reconnaît toute
chiffre hexadécimal ou ".".
*, +, ? porte sur le dernier élément. Sinon, il faut des (...) :
/a[a-z]+/ : reconnaît les mots qui commencent par a
/(a[a-z])+/ : reconnaît les mots dont les lettres impaires sont des "a" ("ananas")
[0-9]+\s*(francs|euros)
Exemples :
Si s est un texte, s.match(/un/)
reconnaît "cinq colonnes à la une."
mais s.match(/\bun\b)
ne reconnaît que les textes qui contiennent le mot "un"
Exemples
Les parenthèses délimitent des groupes. La première parenthèse ouvrante délimite le groupe 1, la seconde le groupe 2, etc...
On peut extraire les groupes, mais aussi les utiliser dans l'expression elle-même. \1 désigne le texte reconnu par le premier groupe, \2 par le second, etc...
Exemple /([0-9])\1+/
reconnaît un même chiffre répété
au moins deux fois ("111" ou "33333" mais pas "123")
Pour qu'une parenthèse ne crée pas de groupe, on
utilise (?:....)
:
/(?:\s|,)/
if (s.match(/[0-9]+/)) { ... }
"si s contient un entier"
var t= s.match(/[0-9]+/); if (t != null) { val= t[0]; }
Vérifie que s contient un entier et extrait le texte en question dans val.
Deux versions
s="192.168.0.1"; t= s.split("."); // t = {"192", "168", "0", "1"}
s="du texte et des\t\t espacements étranges"; t= s.split(/\s+/); // t= du,texte,et,des,espacements,étranges alert(t);Note : si la regexp contient des groupes, le résultat contiendra pour chaque élément séparé :
Prend deux arguments : une regexp et une string
Ne modifie pas la chaîne à laquelle elle s'applique
Exemple :s1= s.replace(/\s+/g, "-");Remplace toutes (/g) les suites d'espaces par un "-".
g : sans le "g", on remplace uniquement la première occurrence
On peut utiliser $0, $1,... dans la chaîne de remplacement pour désigner une partie de la chaîne d'origine
Exemple : remplacer toutes les occurrences de NOMBRE eur./euros par NOMBRE €
s= "le prix est de 300 eur., mais on peut transiger à 199 euros." s= s.replace(/([0-9]+)\s*(eur\.|euros)/g, "$1 \u20AC"); alert(s);
var s= ".*"; // string !!! var r= new Regexp(s); // regexp
Écrire un code qui permette de vérifier qu'un texte est bien une adresse IP, et qui en extraie les quatre parties
On tape une suite de nombre (y compris des réels) dans un champ, séparés par des espaces ou des retour-chariot, et on veut calculer leur somme. Adaptez avec des expressions régulières