Échappement métacaractères regex
Collez file.txt (v1.0+) et obtenez file\.txt \(v1\.0\+\) : chaque point, parenthèse, signe plus et autre opérateur reçoit une barre oblique inverse, et le motif correspond à votre texte caractère par caractère. L'option inverse retrouve le texte. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- file.txt (v1.0+)
- Mode de calcul
- Escape
- Résultat
- file\.txt \(v1\.0\+\)
- Longueur
- 21
- Longueur de l'entrée
- 16
- Nombre échappé
- 5
Les expressions régulières traitent points, étoiles, crochets et parenthèses comme des opérateurs plutôt que comme des caractères ordinaires. Si vous collez un nom tel que report.v2.pdf dans un motif sans échappement, les points signifient soudain « n’importe quel caractère » et la correspondance s’élargit en silence au-delà du nom voulu. Codes produit, parties locales d’e-mail, globs shell collés dans des champs de recherche et filtres saisis par l’utilisateur présentent le même risque. Cette capacité parcourt chaque caractère, préfixe chaque métacaractère au style JavaScript et PCRE d’une barre oblique inverse, et renvoie un fragment que vous pouvez insérer dans un motif plus large en sachant qu’il correspondra caractère par caractère à la chaîne d’origine. Le chemin inverse déséchappe un motif littéral pur pour retrouver le texte brut derrière des séquences comme \. et \(.
Quels caractères doivent être échappés et pourquoi
Un moteur d’expression régulière lit certains symboles comme de la syntaxe plutôt que comme des données. L’ensemble classique à échapper pour une correspondance littérale dans les constructeurs RegExp JavaScript et les moteurs de style PCRE comprend le point, l’étoile, le plus, le point d’interrogation, l’accent circonflexe, le dollar, les accolades, les parenthèses, la barre verticale, les crochets et la barre oblique inverse elle-même.
Sans barre initiale, un point correspond à n’importe quel caractère, une étoile répète l’atome précédent, des parenthèses ouvrent un groupe de capture, et un circonflexe ou un dollar ancre la correspondance. Lorsque vous souhaitez seulement que le SKU produit, le chemin de fichier ou le message d’erreur de l’utilisateur apparaissent exactement tels qu’ils ont été saisis, chacun de ces symboles doit redevenir une donnée. Cette capacité préfixe chacun d’une seule barre sur le chemin d’échappement : file.txt devient file\.txt, et une étiquette de version telle que (v1.0+) devient \(v1\.0\+\).
Lettres, chiffres, espaces et la plupart de la ponctuation hors de cet ensemble passent inchangés.
Où l’échappement littéral de regex apparaît dans le travail réel
Les interfaces de recherche et de filtre enveloppent souvent la saisie utilisateur dans un motif dynamique pour surligner des correspondances partielles dans un tableau ; échapper d’abord évite qu’une seule parenthèse ne lève une erreur de syntaxe ou n’ouvre un groupe non voulu. Les outils de triage de journaux transforment une ligne d’erreur copiée en motif de recherche qui ne doit pas traiter les points des noms d’hôte ou des numéros de version comme des jokers.
Les relecteurs de sécurité convertissent une chaîne suspecte en fragment littéral avant de l’intégrer dans une expression de liste d’autorisation afin que les métacaractères n’élargissent pas la correspondance. Les pipelines de localisation et de contenu stockent parfois des fragments déjà échappés ; le déséchappement récupère le jeton lisible pour l’affichage sans réintroduire de syntaxe active. Les cours de programmation utilisent un échappeur en direct pour montrer pourquoi « n’importe quel caractère » et « le caractère point » ne sont pas la même idée dans une leçon de regex.
Si vous devez exécuter des correspondances et remplacements, expliquer un motif en prose, générer un motif à partir d’une description ou encoder un URL en pourcentage, ce sont des intentions de recherche et des pages distinctes — celle-ci ne couvre que l’échappement et le déséchappement littéraux des métacaractères.
Cas d’usage
Filtres utilisateur sûrs dans les recherches
Échappez ce que l’utilisateur saisit avant de l’envelopper dans un regex dynamique afin que points et parenthèses ne deviennent jamais opérateurs ni erreurs de syntaxe.
Questions fréquentes
Quels métacaractères cet outil échappe-t-il ?
L’ensemble littéral au style JavaScript / PCRE : . * + ? ^ $ { } ( ) | [ ] et la barre oblique inverse. Chacun est préfixé de \ pour que le fragment corresponde exactement aux caractères d’origine.
Que se passe-t-il en cas d’entrée incorrecte ?
Text manquant, mode inconnu, chaînes trop longues, barre finale, échappements non méta comme \d et métacaractères nus sur le chemin unescape sont rejetés. Les échecs de validation ne sont pas facturés.
Cela exécute-t-il ou teste-t-il une expression régulière ?
Non. Il n’échappe et ne déséchappe que pour une correspondance littérale. Utilisez un testeur de regex dédié si vous avez besoin de match, replace ou de capture de groupes.
Quel est le coût ?
L’outil navigateur est gratuit et s’exécute en local.
Peut-on retrouver le texte d'origine à partir d'un motif échappé ?
Oui, avec l'option inverse, à condition que le motif soit littéral : chaque barre oblique inverse doit précéder un métacaractère ou une autre barre. Des séquences comme \d ou \n, ou une barre isolée à la fin, sont refusées au lieu d'être devinées.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/regex-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"file.txt (v1.0)"}'const res = await fetch("https://api.kit.forhosting.com/enc/regex-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "file.txt (v1.0)"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/regex-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "file.txt (v1.0)"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/regex-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"file.txt (v1.0)"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"file.txt (v1.0)"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/regex-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "file.txt (v1.0)"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.regex_escape",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L’outil gratuit du navigateur et l’API payante partagent un noyau déterministe au prix publié de $0.002 par élément réussi.
Ce que vous envoyez et ce que vous recevez
Envoyez un champ chaîne obligatoire nommé text et un champ optionnel mode égal à escape ou unescape. Lorsque mode est omis, escape est la valeur par défaut et une seule charge utile reste utile. Escape parcourt l’entrée, compte combien de métacaractères ont été préfixés et renvoie result comme fragment de motif sûr principal. Un text manquant, des valeurs de mode non prises en charge et des chaînes plus longues que le maximum documenté échouent aussi sans consommer le solde prépayé. Des alias tels que encode et decode sont acceptés pour les équipes déjà branchées sur d’autres outils d’encodage du catalogue. Unescape n’inverse que des motifs littéraux purs : une barre doit être suivie d’un métacaractère ou d’une autre barre ; une barre finale seule, un échappement tel que \d ou \n hors de l’ensemble littéral, ou un métacaractère nu jamais échappé échouent avec invalid_input et un message en anglais indiquant l’index. Les réponses de succès reprennent mode et le text d’origine, incluent length et input_length, signalent escaped_count, listent par ordre les métacaractères uniques touchés et joignent une courte étiquette du jeu de règles JavaScript et PCRE. Le tarif des appels API réussis est la base publiée de $0.002 par élément.
Où l’échappement littéral de regex apparaît dans le travail réel
Comme cette capacité est un moteur parse pur, le prix API reste à la base publiée de $0.002 par élément réussi et une validation échouée ne consomme pas le solde.
Cas d'intégration
Motifs golden stables en CI
Convertissez noms de fichiers et chaînes d’erreur en fragments sûrs pour littéraux que les tests peuvent intégrer sans maintenir des barres à la main.
Retrouver le texte brut depuis des fixtures
Déséchappez un motif littéral pur stocké dans un fichier de configuration pour afficher le code produit ou le chemin d’origine dans les outils d’administration.
Questions techniques
Peut-on convertir dans les deux sens ?
Oui. mode=escape (par défaut ; accepte aussi encode) transforme le texte brut en motif sûr pour littéraux ; mode=unescape (accepte aussi decode) inverse un motif littéral pur en texte brut.