L’accent circonflexe ^
et le signe dollar $
ont une signification particulière dans une regexp. Ils sont appelés “ancres”.
L’accent circonflexe ^
correspond au début du texte, et le signe dollar $
– à la fin.
Par exemple, testons si le texte commence par Mary
:
let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true
Le paterne ^Mary
signifie : “le texte commence puis Mary”.
Similairement, nous pouvons vérifier si le texte termine par snow
en utilisant snow$
:
let str1 = "its fleece was white as snow";
alert( /snow$/.test(str1) ); // true
In these particular cases we could use string methods startsWith/endsWith
instead. Regular expressions should be used for more complex tests.
Test pour une correspondance complète
Les deux ancres mises ensemble ^...$
pour vérifier si une chaîne de caractères correspond entièrement à un paterne. Par exemple, pour vérifier si l’entrée de l’utilisateur est dans le bon format.
Vérifions si une chaîne de caractères est une heure au format 12:34
. En résumé : deux nombres, puis deux points, et enfin deux autres nombres.
Dans le langage des expressions régulières, c’est \d\d:\d\d
:
let goodInput = "12:34";
let badInput = "12:345";
let regexp = /^\d\d:\d\d$/;
alert( regexp.test(goodInput) ); // true
alert( regexp.test(badInput) ); // false
Ici, la correspondance pour \d\d:\d\d
doit commencer juste après le début du texte ^
, et la fin $
doit immédiatement suivre.
La chaîne entière doit être dans ce format. S’il y a la moindre déviation ou le moindre caractère de trop, le résultat sera false
.
Les ancres agissent différemment si le marqueur m
est présent. Nous verrons cela dans le prochain article.
Les ancres ^
et $
sont des tests. Elles n’ont aucune longueur.
En d’autres termes, elles ne vérifient pas un caractère, mais forcent plutôt le moteur à vérifier une condition (le texte commence/termine).