Test et débogage des expressions régulières : des bases aux motifs efficaces
Texte
Pourquoi tester les regex en ligne ?
Les expressions régulières sont puissantes mais faciles à mal faire du premier coup. Un testeur en ligne vous aide à :
- Surligner les correspondances en temps réel : Voyez ce qui correspond pendant que vous tapez
- Visualiser les groupes de capture : Inspectez chaque groupe clairement
- Basculer les flags rapidement : Changez
g/i/m/ssans redéploiement - Détecter les erreurs de syntaxe instantanément : Les motifs invalides sont signalés immédiatement
Aide-mémoire de syntaxe regex
Correspondance de base
| Syntaxe | Signification | Exemple | Correspond à |
|---|---|---|---|
. |
Tout caractère (sauf saut de ligne) | a.c |
abc, a1c |
\d |
Chiffre | \d{3} |
123 |
\w |
Caractère de mot | \w+ |
hello_1 |
\s |
Espace blanc | a\sb |
a b |
[abc] |
Classe de caractères | [aeiou] |
a, e, i |
[^abc] |
Classe négée | [^0-9] |
non-chiffres |
Quantificateurs
| Syntaxe | Signification | Glouton / Paresseux |
|---|---|---|
* |
Zéro ou plus | a* / a*? |
+ |
Un ou plus | a+ / a+? |
? |
Zéro ou un | a? / a?? |
{n,m} |
Entre n et m | a{2,4} |
Groupes et références
| Syntaxe | Signification | Exemple |
|---|---|---|
(abc) |
Groupe capturant | (\d{4})-(\d{2}) |
(?:abc) |
Groupe non capturant | `(?:http |
\1 |
Référence arrière | (\w)\1 correspond à aa, bb |
(?<name>) |
Groupe nommé | (?<year>\d{4}) |
Utiliser le testeur de regex en ligne
Étapes
- Ouvrez le Testeur de Regex
- Entrez votre motif dans le champ regex
- Collez le texte d'exemple dans le champ de test
- Choisissez les flags (
gglobal /iinsensible à la casse /mmultiligne) - Examinez les surlignages et les détails de correspondance
Flags courants
| Flag | Signification | Par défaut |
|---|---|---|
g |
Trouver toutes les correspondances | Première correspondance uniquement |
i |
Ignorer la casse | Sensible à la casse |
m |
Mode multiligne | Ligne unique |
s |
. correspond aux sauts de ligne |
. ne correspond pas aux sauts de ligne |
u |
Mode Unicode | — |
Pièges courants
1. Correspondance gloutonne
Texte : <div>hello</div><div>world</div>
Motif : <div>.*</div>
Résultat : toute la chaîne correspond comme un seul bloc !
Solution : <div>.*?</div> ← correspondance paresseuse, deux correspondances séparées
2. Retour arrière catastrophique
// Dangereux : les quantificateurs imbriqués provoquent un retour arrière exponentiel
/^(a+)+$/.test('a'.repeat(30) + 'b');
// Ce test peut prendre des secondes ou bloquer
// Solution : éviter les quantificateurs imbriqués, ou utiliser les groupes atomiques si supportés
3. Oublier d'échapper les caractères spéciaux
Motif : price.com ← . correspond à tout caractère
Solution : price\.com ← correspond uniquement à price.com
Exemples pratiques
| Cas d'usage | Motif |
|---|---|
| Téléphone US (simplifié) | ^\+?1?\d{10,11}$ |
| Email (basique) | ^[\w.-]+@[\w-]+\.[\w.]+$ |
| URL | ^https?:\/\/[\w.-]+(?:\.[\w]+)+[/\w.-]*$ |
| Adresse IP | ^(\d{1,3}\.){3}\d{1,3}$ |
| Date YYYY-MM-DD | `^\d{4}-(?:0[1-9] |
| Caractères CJK | [\u4e00-\u9fff]+ |
FAQ
Le motif fonctionne dans le testeur mais pas dans le code ?
Vérifiez si vous avez oublié le flag g, ou si votre chaîne contient des sauts de ligne mais que le motif manque de m / s.
Comment correspondre du texte multiligne ?
Utilisez le flag s pour que . corresponde aux sauts de ligne, ou utilisez [\s\S] à la place de ..
Résumé
Les regex sont essentielles pour les développeurs, mais la syntaxe est facile à mal faire. Utilisez le Testeur de Regex pour valider et déboguer en temps réel. ToolsKu propose aussi Rechercher et Remplacer et Diff de Texte pour un flux de travail texte complet.
#正则表达式#Regex#文本处理#教程#调试