Escape dei caratteri speciali regex per una corrispondenza letterale
Renda qualsiasi testo sicuro da inserire in un’espressione regolare: invoice.total [draft]? diventa invoice\.total \[draft\]\?, così il punto, le parentesi quadre e il punto interrogativo vengono cercati così come sono invece di agire da istruzioni. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Non sempre il testo letterale può essere inserito direttamente in un’espressione regolare. Caratteri come punto, punto interrogativo, parentesi quadra o barra inversa sono istruzioni della sintassi regex: un valore senza escape può quindi trovare il testo sbagliato o rendere non valido il pattern. Questa capacità trasforma una stringa in un frammento di pattern ECMAScript che tratta letteralmente ogni metacarattere regex. È utile quando termini di ricerca, nomi di file, identificatori, etichette o altri valori forniti dagli utenti devono entrare in un’espressione regolare senza cambiare significato.
Trasformi il testo letterale in un frammento sicuro
Invii nel campo text il valore esatto che l’espressione regolare deve riconoscere. Il risultato contiene escaped, un frammento di pattern nel quale ogni metacarattere regex ECMAScript è preceduto da una barra inversa. Lettere, cifre, spazi, punteggiatura priva di significato regex, interruzioni di riga e caratteri Unicode restano invariati.
Per esempio, normalmente un punto rappresenta qualsiasi carattere in un’espressione regolare, mentre un punto con escape indica un punto reale. Le parentesi tonde creano di solito un gruppo, quelle quadre aprono una classe di caratteri, le graffe possono introdurre un numero di ripetizioni e punti interrogativi o asterischi controllano la ripetizione. L’escape di questi simboli conserva il significato letterale del valore originale.
Il frammento restituito non include barre delimitatrici né flag, quindi Lei può passarlo direttamente al costruttore RegExp, inserirlo in un pattern più ampio o salvarlo come corpo del pattern. Una stringa vuota è valida e produce un valore escaped vuoto, poiché non contiene caratteri da trasformare.
Combini il valore con sintassi regex intenzionale
L’escape è particolarmente utile quando una parte del pattern proviene dai dati e un’altra è scritta intenzionalmente come sintassi regex. Supponga che un’applicazione debba trovare all’inizio di una riga un codice prodotto fornito da un utente. Esegua prima l’escape del codice, quindi aggiunga l’ancora iniziale e l’eventuale logica di confine necessaria.
Questa separazione mantiene distinta la struttura affidabile del pattern dal contenuto letterale. Non esegua l’escape dell’intero pattern dopo averlo composto, perché neutralizzerebbe anche ancore, gruppi, alternative o quantificatori che desiderava mantenere attivi. L’output è destinato al corpo di un pattern ECMAScript, non alla notazione del codice sorgente JavaScript.
La distinzione è importante: le barre non sono speciali per il costruttore RegExp e pertanto vengono conservate. Se inserisce il risultato in un letterale regex delimitato da barre all’interno di codice JavaScript generato, l’escape del delimitatore a livello di sorgente è un problema separato. Nel normale codice applicativo, è preferibile passare la stringa restituita a new RegExp e scegliere separatamente i flag.
Conosca la garanzia e verifichi il progetto circostante
La trasformazione è deterministica e lineare: scorre la stringa ricevuta e antepone una barra inversa ai caratteri che controllano la sintassi delle espressioni regolari ECMAScript. Non usa la rete, non esegue l’espressione risultante, non sceglie flag, non aggiunge ancore e non decide se la corrispondenza debba distinguere maiuscole e minuscole. Queste scelte spettano all’applicazione, perché modificano il comportamento della ricerca e non la sicurezza letterale.
Ogni formato ha regole di escape proprie; per combinarle con l’escape regex occorre applicare ogni livello al confine corretto. Dopo la composizione, verifichi il pattern completo con esempi positivi e negativi rappresentativi, soprattutto quando aggiunge sezioni facoltative o alternative intorno al frammento.
Casi d'uso
Creare una ricerca letterale
Converta un termine di ricerca in un frammento sicuro per regex prima di aggiungere intenzionalmente ancore o flag.
Trovare file e identificatori
Conservi punti, parentesi, segni più e altri caratteri sintattici all’interno di valori esatti.
Proteggere la composizione dinamica
Mantenga letterale il testo fornito dagli utenti mentre il codice affidabile definisce la struttura regex circostante.
Domande frequenti
Quali caratteri ricevono l’escape?
L’output esegue l’escape di barra inversa, accento circonflesso, dollaro, punto, barra verticale, punto interrogativo, asterisco, segno più, parentesi tonde, quadre e graffe.
L’output include delimitatori regex?
No. Il valore restituito è un corpo o frammento di pattern ECMAScript senza barre delimitatrici.
Perché la barra normale non riceve l’escape?
Non è speciale in un pattern ECMAScript passato al costruttore RegExp. L’escape di un delimitatore regex nel codice sorgente è un’attività distinta dalla generazione JavaScript.
Posso aggiungere ancore o flag?
Sì. Aggiunga intenzionalmente la sintassi regex intorno al frammento e fornisca separatamente i flag quando costruisce l’espressione regolare completa.
Che cosa accade con una stringa vuota?
Viene accettata e restituisce un valore escaped vuoto, che rappresenta un letterale di lunghezza zero.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev2/regex-special-char-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"invoice.total (USD) [draft]?"}'const res = await fetch("https://api.kit.forhosting.com/dev2/regex-special-char-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "invoice.total (USD) [draft]?"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/regex-special-char-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "invoice.total (USD) [draft]?"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/regex-special-char-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"invoice.total (USD) [draft]?"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"invoice.total (USD) [draft]?"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/regex-special-char-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "invoice.total (USD) [draft]?"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.regex_special_char_escape",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Conosca la garanzia e verifichi il progetto circostante
La capacità inoltre non prepara un valore per un letterale stringa di un linguaggio di programmazione, un documento JSON, un comando shell, un attributo HTML o un URL. Un input che non sia una stringa viene rifiutato con un errore invalid_input anziché essere convertito, impedendo a numeri, array, oggetti, null o booleani di diventare silenziosamente testo inatteso. Le richieste API usano il prezzo base pubblicato di $0.002.
Domande tecniche
Che cosa accade se text non è una stringa?
La richiesta fallisce con un errore invalid_input. I valori non vengono convertiti implicitamente.
Quanto costa una richiesta API?
Il prezzo base dell’API è $0.002 per richiesta; la stessa operazione deterministica può essere eseguita anche nel browser.