logo
GeekFormat

Testeur d'Expressions Régulières

Regex Tester
//
无匹配
Worker · 500ms 超时中断
分类模板库
点选即可填充 pattern / flags / demo
测试文本37
匹配详情
0

还没有匹配结果

输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。

匹配高亮预览· Hover / 点击右侧条目联动
Ada Lovelace Alan Turing Grace Hopper

统计

匹配数量
0
执行耗时
0ms
捕获组
0
命名分组
0

命名分组汇总

当前没有命名分组。

Testeur d'expressions régulières (Regex Tester) gratuit en ligne, prenant en charge les tests de correspondance en temps réel JS, l'affichage des groupes de capture/groupes nommés, l'aperçu de remplacement, l'explication de la syntaxe regex, avec protection de délai d'attente anti-ReDoS intégrée via Web Worker et bibliothèque de modèles regex courants, idéal pour que les développeurs déboguent et valident rapidement les expressions régulières.

Recommandations connexes

Cas d'utilisation

  • Tester en ligne si les expressions régulières pour e-mail, téléphone, pièce d'identité, URL, etc. sont correctes lors du développement de règles de validation de formulaires
  • Extraire les horodatages, messages d'erreur et adresses IP des journaux de niveau ERROR/INFO à l'aide de regex lors de l'analyse de logs
  • Prévisualiser les effets de remplacement regex pendant le nettoyage de données/ETL, comme la conversion de formats de date, le masquage d'informations sensibles (astérisques au milieu des numéros de téléphone)
  • Vérifier si les regex d'extraction de contenu correspondent exactement aux fragments HTML ou champs JSON cibles lors de l'écriture de crawlers web
  • Comprendre la signification de chaque métacaractère et quantificateur via le panneau「Explication」lors de l'apprentissage des expressions régulières, et se familiariser rapidement avec les modèles
  • Envoyer des expressions régulières douteuses à des collègues via un lien de partage pendant le Code Review, pour déboguer et optimiser ensemble

Fonctionnalités

  • Exécution en sandbox Web Worker : les regex s'exécutent dans un thread Worker indépendant avec interruption automatique après 500 ms, empêchant complètement le ReDoS de bloquer le navigateur
  • Correspondance en temps réel + surlignage coloré : les résultats s'affichent instantanément lors de la saisie, avec 5 couleurs pour distinguer les différentes correspondances, et panneau de détails lié au survol
  • Groupes de capture + groupes nommés : chaque correspondance se développe automatiquement pour afficher tous les groupes de capture ($1/$2) et groupes nommés ($<name>), avec statistiques récapitulatives
  • Aperçu de remplacement : saisissez une chaîne de remplacement pour voir un aperçu en temps réel, avec boutons rapides pour la syntaxe $1/$&/$`/$'/$<name>
  • Explication de la syntaxe regex : analyse automatiquement l'expression régulière et explique élément par élément la signification des métacaractères, quantificateurs, groupes, ancres, etc.
  • 12 modèles courants : inclut 12 modèles regex fréquents comme e-mail/URL/téléphone/chinois/IPv4/UUID/date/logs/balises HTML, remplissables en un clic
  • Basculement de 6 indicateurs : boutons visuels pour basculer g/i/m/s/u/y, pas besoin de mémoriser la syntaxe
  • Lien de partage : génère une URL incluant pattern/flags/text en un clic, copiez-la à des collègues pour reproduire directement la scène de test
  • Statistiques d'exécution : affiche en temps réel le nombre de correspondances, le temps d'exécution (ms), le nombre total de groupes de capture et la quantité de groupes nommés
  • Limite de 1500 correspondances : troncature automatique pour éviter les ralentissements de page dus à un texte trop long, et messages d'erreur conviviaux pour les regex avec erreurs de syntaxe

Comment utiliser

  1. Saisissez une expression régulière dans le champ de saisie entre / / en haut (pas besoin d'ajouter vous-même les barres obliques), saisissez les indicateurs (comme g, gi, gim) à droite ou cliquez sur les boutons ci-dessous pour les basculer
  2. Collez ou saisissez le contenu textuel à faire correspondre dans la zone「Texte de test」; les résultats de correspondance seront surlignés en couleurs en temps réel
  3. Cliquez sur le panneau「Détails de correspondance」à droite pour voir la position, le contenu, les groupes de capture et groupes nommés de chaque correspondance
  4. Basculez vers l'onglet「Zone de remplacement」, saisissez une chaîne de remplacement (compatible avec les références telles que $1/$&/$<name>) et prévisualisez le résultat du remplacement en temps réel
  5. Basculez vers l'onglet「Explication d'expression」pour voir l'explication élément par élément de la syntaxe regex générée automatiquement
  6. Lorsque vous avez besoin de modèles courants, cliquez sur「Bibliothèque de modèles par catégorie」à gauche pour sélectionner le modèle correspondant et le remplir en un clic ; après le débogage, cliquez sur「Partager」pour générer un lien

FAQ

Qu'est-ce que le ReDoS ? Pourquoi les tests regex nécessitent-ils une protection contre le ReDoS ?

Le ReDoS (Regular Expression Denial of Service, déni de service par expression régulière) se produit lorsque certaines expressions régulières malicieusement construites (comme `(a+)+$` lors de la correspondance de longues chaînes) déclenchent un retour arrière catastrophique (catastrophic backtracking), entraînant une utilisation CPU à 100 %, un blocage du navigateur ou un crash du serveur. Cet outil exécute la correspondance regex dans un sandbox Web Worker avec une interruption automatique après 500 ms, donc même si vous saisissez une expression malveillante qui déclenche un retour arrière, elle ne bloquera pas votre navigateur ; c'est la fonctionnalité de sécurité principale de cet outil.

Que signifient les six indicateurs g, i, m, s, u, y dans les expressions régulières ?

g (global) correspondance globale, recherche toutes les correspondances au lieu de la première ; i (ignoreCase) ignore la casse ; m (multiline) mode multiligne, fait que ^ et $ correspondent au début/fin de chaque ligne ; s (dotAll) fait que le point . correspond à tous les caractères, y compris les sauts de ligne ; u (unicode) mode Unicode, traite correctement les emojis et les caractères multioctets ; y (sticky) correspondance adhésive, correspond exactement à partir de la position lastIndex. Cet outil fournit des boutons visuels pour basculer les 6 indicateurs ; cliquez pour les activer/désactiver en temps réel.

Que sont les groupes de capture et les groupes nommés ? Comment les utiliser ?

Les groupes de capture sont entourés de parenthèses `(pattern)`, et après correspondance, on peut extraire des sous-chaînes à l'aide de références telles que $1, $2. Les groupes nommés utilisent la syntaxe `(?<name>pattern)`, et après correspondance, on peut y faire référence avec `$<name>`, ce qui améliore la lisibilité du code. Par exemple, après avoir fait correspondre une date avec `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})`, vous pouvez la reformater dans la chaîne de remplacement avec `$<year>年$<month>月$<day>日`. Cet outil liste automatiquement les résultats des groupes de capture et des groupes nommés pour chaque correspondance.

Quelles syntaxes regex de langages de programmation sont prises en charge ?

Cet outil est basé sur le moteur RegExp natif de JavaScript et est largement compatible avec la syntaxe des moteurs principaux tels que JS/TypeScript, le module re de Python, java.util.regex de Java, PHP preg_*, Go regexp (tous basés sur le courant PCRE/Perl). Les principales différences résident dans certaines fonctionnalités avancées (comme la syntaxe de groupes nommés `(?P<name>)` en Python, le lookbehind de longueur variable en .NET). 99 % des expressions régulières du développement quotidien (validation/extraction d'e-mails, téléphones, URL, dates, etc.) sont universelles entre les moteurs, et vous pouvez les tester directement dans cet outil puis les copier dans votre code.

Comment partager une expression régulière testée avec des collègues ?

Cliquez sur le bouton「Partager」dans la barre d'outils supérieure ; l'outil encodera automatiquement l'expression régulière actuelle, les indicateurs et le texte de test dans les paramètres d'URL, et copiera le lien dans le presse-papiers. Lorsque vos collègues ouvriront le lien, ils verront exactement le même état de test (pattern+flags+testText), ce qui est idéal pour la collaboration d'équipe et le débogage à distance.

Que signifient les symboles spéciaux $1, $&, $`, $' dans les chaînes de remplacement ?

Dans les chaînes de remplacement : $1, $2... représentent le Nième groupe de capture ; $& représente tout le texte correspondant ; $` représente la partie avant le texte correspondant ; $' représente la partie après le texte correspondant ; $$ représente le littéral $ ; $<name> représente un groupe nommé. Par exemple, remplacer `(\d{4})-(\d{2})-(\d{2})` par `$2/$3/$1` convertit 2026-03-12 en 03/12/2026. La zone de remplacement de cet outil fournit des boutons d'insertion rapide pour ces symboles spéciaux.

Qu'est-ce qu'une Expression Régulière (Regex/RegExp) ?

Une expression régulière (abréviation : Regex/RegExp) est un langage de motifs textuels qui utilise une seule chaîne pour décrire et faire correspondre une série de chaînes satisfaisant certaines règles syntaxiques. Son histoire remonte aux années 1950, lorsque le neurologue Warren McCulloch et le mathématicien Walter Pitts ont proposé un modèle mathématique de neurones ; plus tard, le mathématicien Stephen Kleene a proposé en 1956 une description algébrique des「ensembles réguliers」basée sur celui-ci. Ken Thompson, père d'Unix, a implémenté pour la première fois les expressions régulières dans l'éditeur QED à la fin des années 1960, et depuis lors, les expressions régulières sont devenues une fonctionnalité centrale de la chaîne d'outils Unix (grep, sed, awk, vi).

Dans les langages de programmation modernes, les expressions régulières sont presque une capacité standard : RegExp de JavaScript, le module re de Python, java.util.regex de Java, la classe Regex de .NET, le paquet regexp de Go fournissent un support regex. Les expressions régulières sont largement utilisées dans la validation de formulaires (e-mail/téléphone/pièce d'identité), la recherche et le remplacement de texte (rechercher et remplacer dans les éditeurs), l'analyse de logs (extraire les logs ERROR), le crawling web (extraction de contenu HTML), le nettoyage de données (ETL), la correspondance de routes, le filtrage d'entrée et la protection de sécurité (règles WAF), entre autres scénarios.

Les concepts centraux des expressions régulières incluent : classes de caractères (\d chiffres, \w caractères de mot, \s espaces blancs), quantificateurs (* zéro ou plus, + un ou plus, ? zéro ou un, {n,m} nombre spécifié), ancres (^ début, $ fin, \b limite de mot), groupes ((...) groupe de capture, (?:...) groupe sans capture, (?<name>...) groupe nommé), alternance (|), ensembles de caractères ([a-z]), assertions de recherche ((?=...) assertion positive avant, (?!) assertion négative avant), etc. Maîtriser regex peut considérablement améliorer l'efficacité du traitement de texte, mais vous devez également faire attention à éviter les pièges de performance tels que le ReDoS.

术语表

Regex / RegExp
Abréviation de Regular Expression (expression régulière), une syntaxe de chaîne décrivant des motifs de correspondance de texte, utilisée pour rechercher, remplacer et valider du texte.
Groupe de Capture (Capture Group)
Sous-expression entourée de parenthèses (pattern), les résultats correspondants peuvent être référencés par position à l'aide de $1, $2.
Groupe Nommé (Named Group)
Groupe de capture défini avec la syntaxe (?<name>pattern), peut être référencé par nom à l'aide de $<name>, avec une meilleure lisibilité que les références numériques.
ReDoS
Regular Expression Denial of Service (déni de service par expression régulière), causé par un retour arrière catastrophique qui fait croître exponentiellement le temps d'exécution regex, bloquant le navigateur ou le serveur.
Retour Arrière (Backtracking)
Mécanisme du moteur NFA par lequel, lorsqu'une tentative de correspondance échoue, il revient à des positions antérieures pour essayer d'autres possibilités ; des regex complexes peuvent provoquer un retour arrière exponentiel.
Indicateurs (Flags)
Paramètres modifiant le comportement de correspondance regex ; les courants sont g(global), i(ignore casse), m(multiligne), s(dotAll), u(Unicode), y(adhésif).
Assertions de Recherche (Lookaround)
Assertions de largeur nulle, incluant l'assertion positive avant (?=...), l'assertion négative avant (?!...), l'assertion positive arrière (?<=...), l'assertion négative arrière (?<!...), elles ne font que juger la position sans consommer de caractères.
PCRE
Perl Compatible Regular Expressions (expressions régulières compatibles Perl), un standard de syntaxe regex largement utilisé adopté par la plupart des langages tels que PHP, Java, Python.
Web Worker
API du navigateur fournissant des threads d'arrière-plan indépendants du thread principal ; cet outil l'utilise pour exécuter des regex dans des Workers, de sorte que même si un ReDoS se produit, l'UI n'est pas bloquée.
Quantificateur (Quantifier)
Syntaxe spécifiant le nombre de répétitions de l'élément précédent : *(0 ou plus), +(1 ou plus), ?(0 ou 1), {n}(exactement n fois), {n,m}(n à m fois).

Tableau de référence rapide des métacaractères regex courants

MétacaractèreSignificationExemple explicatif
.Tout caractère individuel (sauf saut de ligne ; avec indicateur s inclut les sauts de ligne)a.c correspond à abc, aXc, ne correspond pas à a\nc
\dCaractère chiffre, équivaut à [0-9]\d{3} correspond à 123, 456
\wCaractère de mot, équivaut à [A-Za-z0-9_]\w+ correspond à hello_123
\sCaractère d'espace blanc (espace/tabulation/saut de ligne, etc.)a\sb correspond à a b (espace au milieu)
^Début de chaîne (avec indicateur m c'est le début de ligne)^Hello correspond à Hello en début de ligne
$Fin de chaîne (avec indicateur m c'est la fin de ligne)end$ correspond à end en fin de ligne
\bLimite de mot\bcat\b correspond au mot indépendant cat, pas à category
*L'élément précédent se répète 0 ou plusieurs fois (gourmand)ab*c correspond à ac, abc, abbc
+L'élément précédent se répète 1 ou plusieurs foisab+c correspond à abc, abbc, pas à ac
?L'élément précédent 0 ou 1 fois (ou utilisé pour non gourmand/assertions)colou?r correspond à color et colour
|Alternance/ou, correspond à gauche ou droitecat|dog correspond à cat ou dog
[...]Ensemble de caractères, correspond à l'un d'eux[aeiou] correspond à toute voyelle

Modèles de référence rapide d'expressions régulières courantes

UsageExpression régulièreIndicateurs recommandés
Adresse e-mail[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Numéro mobile Chine continentale1[3-9]\d{9}g
Lien URLhttps?:\/\/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_+.~#?&/=]*gi
Adresse IPv4\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bg
Date YYYY-MM-DD\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])g
Numéro de pièce d'identité (18 chiffres)[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]g
UUID[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}gi

Code Examples

Correspondance et remplacement regex en JavaScript

// Valider le format d'e-mail
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true

// Extraire les groupes nommés (analyse de dates)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = '会议时间:2026-03-12,截止:2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
}

// Remplacement : conversion de format de date YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Heure de réunion : 03/12/2026, échéance : 04/01/2026

Utilisation du module re en Python

import re

# Rechercher toutes les correspondances
text = '联系:alice@example.com,bob@test.org'
emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
print(emails)  # ['alice@example.com', 'bob@test.org']

# Extraction avec groupes nommés (Python utilise la syntaxe ?P<name>)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, '发布于 2026-03-12')
if m:
    print(m.group('year'), m.group('month'), m.group('day'))

# Remplacement : masquer les 4 chiffres centraux du numéro de téléphone
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', '手机号:13812345678')
print(result)  # Téléphone : 138****5678

Utilisation de java.util.regex en Java

import java.util.regex.*;

class RegexDemo {
    public static void main(String[] args) {
        String text = "Error [2026-03-12 18:05:09] Connection failed";

        // Compiler la regex (en production, il faut mettre en cache l'instance Pattern)
        Pattern p = Pattern.compile(
            "(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
        );
        Matcher m = p.matcher(text);

        if (m.find()) {
            System.out.println("级别: " + m.group("level"));
            System.out.println("时间: " + m.group("time"));
            System.out.println("消息: " + m.group("message"));
        }

        // Remplacer tous les chiffres
        String cleaned = "abc123def456".replaceAll("\\d+", "*");
        System.out.println(cleaned); // abc*def*
    }
}

Authoritative References