RegEx Tester: Strumento Online per Testare Espressioni Regolari

THEJORD Team9 min di lettura
regexdevelopmentvalidationprogrammingtools

Guida completa al RegEx Tester: testa espressioni regolari in tempo reale. Pattern italiani (codice fiscale, P.IVA, CAP), esempi JavaScript/Python/PHP e best practices.

RegEx Tester: Strumento Online per Testare Espressioni Regolari

RegEx Tester: Strumento Online per Testare Espressioni Regolari

Le espressioni regolari (regex) sono sequenze di caratteri che definiscono pattern di ricerca nel testo. Fondamentali per sviluppatori, data analyst e chiunque lavori con elaborazione di testo, le regex permettono di validare input, estrarre dati, fare ricerca e sostituzione avanzata.

Il nostro RegEx Tester online è completamente gratuito, veloce e privacy-first: processa tutto nel browser senza inviare dati a server esterni. Ideale per testare, debuggare e perfezionare le tue espressioni regolari in tempo reale.

Cos'è un'Espressione Regolare

Un'espressione regolare (regex o regexp) è un pattern che descrive un insieme di stringhe di testo. Invece di cercare una stringa esatta, una regex definisce regole generali che il testo deve rispettare.

Esempio Base

// Cercare stringa esatta
"hello" → trova solo "hello"

// Regex con pattern
/hel+o/ → trova "helo", "hello", "helllo", "hellllo"...
/h[ae]llo/ → trova "hallo" e "hello"
/\d{3}-\d{4}/ → trova "123-4567" (formato telefono)

Componenti Fondamentali

  • Caratteri letterali: `abc` cerca esattamente "abc"
  • Metacaratteri: `.` (qualsiasi), `*` (zero o più), `+` (uno o più), `?` (opzionale)
  • Classi di caratteri: `[abc]` (a o b o c), `[0-9]` (cifra), `[a-z]` (lettera minuscola)
  • Ancore: `^` (inizio), `$` (fine), `\b` (word boundary)
  • Gruppi: `(abc)` (gruppo di cattura), `(?:abc)` (gruppo non-cattura)
  • Quantificatori: `{3}` (esattamente 3), `{2,5}` (da 2 a 5), `{3,}` (3 o più)

Casi d'Uso delle Espressioni Regolari

1. Validazione Input Utente

Verificare che i dati inseriti rispettino un formato specifico:

// Email
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/

// Telefono italiano (+39 o 0039)
/^(\+39|0039)?\s?3\d{2}\s?\d{6,7}$/

// Codice Fiscale italiano
/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/

// Partita IVA italiana
/^IT\d{11}$/

// CAP italiano (5 cifre)
/^\d{5}$/

// IBAN italiano
/^IT\d{2}[A-Z]\d{10}[A-Z0-9]{12}$/

Caso pratico: Form di registrazione che valida email, telefono e codice fiscale prima dell'invio al server.

2. Estrazione Dati da Testo

Estrarre informazioni strutturate da testo non strutturato:

// Estrarre tutti gli indirizzi email da un documento
const text = "Contattaci: info@example.com oppure support@test.it"
const emails = text.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g)
// → ["info@example.com", "support@test.it"]

// Estrarre prezzi in Euro
const prices = text.match(/€\s?\d+[.,]?\d*/g)

// Estrarre date formato DD/MM/YYYY
const dates = text.match(/\d{2}\/\d{2}\/\d{4}/g)

Caso pratico: Parsing di log file per estrarre timestamp, IP address, codici di errore.

3. Ricerca e Sostituzione Avanzata

Modificare testo in modo intelligente usando gruppi di cattura:

// Convertire date da DD/MM/YYYY a YYYY-MM-DD
const text = "Scadenza: 25/12/2024"
text.replace(/(\d{2})\/(\d{2})\/(\d{4})/g, '$3-$2-$1')
// → "Scadenza: 2024-12-25"

// Anonimizzare numeri di telefono
text.replace(/3\d{2}\s?\d{6,7}/g, '3XX XXXXXXX')

// Formattare codici fiscali (aggiungere spazi)
"RSSMRA85M01H501Z".replace(/([A-Z]{6})(\d{2})([A-Z])(\d{2})([A-Z]\d{3}[A-Z])/, '$1 $2$3$4 $5')
// → "RSSMRA 85M01 H501Z"

Caso pratico: Editor di testo che converte automaticamente formati di data, normalizza numeri di telefono, censura dati sensibili.

4. Parsing e Validazione File di Configurazione

Leggere e validare formati strutturati (CSV, INI, env):

// Parsing file .env
KEY=value → /^([A-Z_]+)=(.*)$/

// Validare riga CSV
"nome,cognome,email" → /^[^,]+,[^,]+,[^,]+$/

// Estrarre variabili da template
"Hello {{name}}, welcome!" → /\{\{(\w+)\}\}/g

5. Web Scraping e Data Mining

Estrarre dati strutturati da HTML, XML, JSON embedded:

// Estrarre URL da tag 
/

6. Sicurezza e Sanitizzazione Input

Rilevare e bloccare pattern pericolosi:

// Rilevare SQL injection
/(\bOR\b|\bAND\b|--|;|\/\*|\*\/|xp_|sp_)/i

// Rilevare XSS
/

7. Analisi Log e Monitoring

Filtrare e analizzare log di sistema, web server, applicazioni:

// Apache/Nginx access log
/^(\S+) \S+ \S+ \[([\w:\/]+\s[+\-]\d{4})\] "(\S+)\s?(\S+)?\s?(\S+)?" (\d{3})/

// Estrarre errori da log applicativo
/ERROR.*Exception: (.+)/

// Monitoring performance (tempi di risposta > 1000ms)
/response_time: (\d{4,})/

Come Usare il RegEx Tester di THEJORD

Interfaccia Principale

  1. Apri il RegEx Tester
  2. Pattern RegEx: Inserisci la tua espressione regolare (es. `/\d{3}-\d{4}/`)
  3. Flags: Seleziona opzioni:
    • g (global): Trova tutte le occorrenze
    • i (case-insensitive): Ignora maiuscole/minuscole
    • m (multiline): `^` e `$` matchano inizio/fine riga
    • s (dotAll): `.` matcha anche newline
    • u (unicode): Supporto pieno Unicode
  4. Test String: Inserisci il testo da testare
  5. Vedi risultati in tempo reale con evidenziazione match

Funzionalità Avanzate

  • Match Groups: Visualizza gruppi di cattura `(...)` estratti
  • Replace Mode: Testa sostituzioni con `$1`, `$2` per gruppi
  • Pattern Library: Template predefiniti per casi comuni (email, URL, telefono, codice fiscale)
  • Debug Mode: Visualizza step-by-step come la regex matcha il testo
  • Performance: Warning se regex è inefficiente (ReDoS risk)

Esempio Pratico: Validare Email

// 1. Inserisci pattern
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/

// 2. Flags: nessuno (match case-sensitive)

// 3. Test string
mario.rossi@example.com
MARIO@EXAMPLE.IT
invalid-email
test@subdomain.example.co.uk

// 4. Risultati
✅ mario.rossi@example.com (match completo)
✅ MARIO@EXAMPLE.IT (match completo)
❌ invalid-email (no match)
✅ test@subdomain.example.co.uk (match completo)

Esempi di Codice

JavaScript

// Test regex
const regex = /^3\d{2}\s?\d{6,7}$/
regex.test('333 1234567') // true
regex.test('02 12345') // false

// Estrazione con match()
const text = "Email: test@example.com, info@test.it"
const emails = text.match(/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi)
console.log(emails) // ["test@example.com", "info@test.it"]

// Replace con gruppi di cattura
const data = "25/12/2024"
const formatted = data.replace(/(\d{2})\/(\d{2})\/(\d{4})/, '$3-$2-$1')
console.log(formatted) // "2024-12-25"

// Validazione form in React
function validateEmail(email) {
  const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
  return regex.test(email)
}

// Estrazione gruppi con exec()
const regex = /(\d{2})\/(\d{2})\/(\d{4})/
const match = regex.exec("Data: 25/12/2024")
if (match) {
  console.log(`Giorno: ${match[1]}, Mese: ${match[2]}, Anno: ${match[3]}`)
}

Python

import re

# Test regex
pattern = r'^3\d{2}\s?\d{6,7}$'
re.match(pattern, '333 1234567')  # Match object
re.match(pattern, '02 12345')     # None

# Estrazione
text = "Email: test@example.com, info@test.it"
emails = re.findall(r'[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}', text, re.IGNORECASE)
print(emails)  # ['test@example.com', 'info@test.it']

# Replace con gruppi
data = "25/12/2024"
formatted = re.sub(r'(\d{2})/(\d{2})/(\d{4})', r'\3-\2-\1', data)
print(formatted)  # "2024-12-25"

# Validazione codice fiscale
def validate_cf(cf):
    pattern = r'^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$'
    return bool(re.match(pattern, cf.upper()))

# Parsing log con gruppi nominati
log = '192.168.1.1 - - [10/Dec/2024:13:55:36] "GET /api/users HTTP/1.1" 200'
pattern = r'(?P\S+).*\[(?P[\w:/]+).*\] "(?P\w+) (?P\S+).*" (?P\d{3})'
match = re.search(pattern, log)
print(match.groupdict())
# {'ip': '192.168.1.1', 'date': '10/Dec/2024:13:55:36', 'method': 'GET', 'path': '/api/users', 'status': '200'}

PHP

<?php
// Test regex
$pattern = '/^3\d{2}\s?\d{6,7}$/';
preg_match($pattern, '333 1234567');  // 1 (true)
preg_match($pattern, '02 12345');     // 0 (false)

// Estrazione
$text = "Email: test@example.com, info@test.it";
preg_match_all('/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i', $text, $matches);
print_r($matches[0]);  // Array(['test@example.com', 'info@test.it'])

// Replace
$data = "25/12/2024";
$formatted = preg_replace('/(\d{2})\/(\d{2})\/(\d{4})/', '$3-$2-$1', $data);
echo $formatted;  // "2024-12-25"

// Validazione Partita IVA
function validatePIVA($piva) {
    return preg_match('/^IT\d{11}$/', $piva);
}

// Sanitizzazione input (rimuovere caratteri non alfanumerici)
$input = "Hello, World! 123";
$clean = preg_replace('/[^a-zA-Z0-9\s]/', '', $input);
echo $clean;  // "Hello World 123"
?>

Pattern RegEx Comuni per l'Italia

Tipo Pattern Esempio Match
Email /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ mario@example.it
Telefono Mobile /^(\+39|0039)?3\d{2}\s?\d{6,7}$/ +39 333 1234567
Telefono Fisso /^(\+39|0039)?0\d{1,3}\s?\d{6,8}$/ 02 12345678
Codice Fiscale /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/ RSSMRA85M01H501Z
Partita IVA /^IT\d{11}$/ IT12345678901
CAP /^\d{5}$/ 00100
IBAN Italiano /^IT\d{2}[A-Z]\d{10}[A-Z0-9]{12}$/ IT60X0542811101000000123456
Targa Auto /^[A-Z]{2}\d{3}[A-Z]{2}$/ AB123CD
URL /^https?:\/\/[a-z0-9.-]+\.[a-z]{2,}/i https://thejord.it
Data DD/MM/YYYY /^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[012])\/\d{4}$/ 25/12/2024

Confronto RegEx Tester

Tool Highlights Replace Groups Performance Warning Library
THEJORD ✅ IT patterns
Regex101 ✅ Multi-lang
RegExr
RegexPal

Quando Usare THEJORD RegEx Tester

  • Privacy-first: Nessun dato inviato a server esterni (tutto in locale)
  • Pattern italiani: Library con regex per codice fiscale, P.IVA, CAP, IBAN
  • Fast: Nessun loading, elaborazione istantanea
  • Gratuito: Nessun limite di utilizzo o registrazione
  • Multi-language: Supporto JavaScript, Python, PHP, Java syntax

Best Practices e Performance

⚠️ Evitare Catastrophic Backtracking (ReDoS)

Alcune regex possono causare esecuzione esponenziale su input specifici:

// ❌ PERICOLOSO - ReDoS vulnerability
/(a+)+b/
/(\w+\s?)*$/

// ✅ SICURO - Quantificatori non annidati
/a+b/
/[\w\s]+$/

Regola: Evita quantificatori annidati `(a+)+`, `(a*)*`, `(a+)*`.

✅ Ottimizzare le Regex

  • Usa ancore: `^` e `$` limitano il matching
  • Classi specifiche: `\d` invece di `[0-9]`, `\w` invece di `[a-zA-Z0-9_]`
  • Gruppi non-cattura: `(?:...)` invece di `(...)` se non serve estrarre
  • Alternanza efficiente: `(jpg|png|gif)` invece di `(jpg)|(png)|(gif)`

🧪 Testare Edge Cases

Verifica sempre con input limite:

  • Stringa vuota: `""`
  • Un solo carattere: `"a"`
  • Caratteri speciali: `"!@#$%"`
  • Unicode/emoji: `"hello 👋"`
  • Molto lungo: 10.000+ caratteri
  • Newline e tab: `"hello\nworld\t"`

Domande Frequenti (FAQ)

Qual è la differenza tra /g e senza flag g?

Senza `g`, la regex si ferma al primo match. Con `g` (global), trova tutte le occorrenze nel testo.

const text = "cat bat rat"
text.match(/at/)   // ["at"] (solo primo match)
text.match(/at/g)  // ["at", "at", "at"] (tutti i match)

Come faccio a matchare un carattere speciale come . o *?

Usa il backslash `\` per fare escape dei metacaratteri:

/\./ → matcha il punto letterale "."
/\*/ → matcha asterisco "*"
/\+/ → matcha più "+"
/\(/ → matcha parentesi tonda "("

Regex per validare password sicura?

// Min 8 caratteri, almeno: 1 maiuscola, 1 minuscola, 1 numero, 1 speciale
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/

Spiegazione: Usa lookahead positivo `(?=...)` per verificare ogni condizione senza consumare caratteri.

Come estrarre contenuto tra tag HTML?

⚠️ Attenzione: Le regex NON sono adatte per parsing HTML complesso. Per HTML usa un parser (DOMParser, Cheerio, BeautifulSoup).

Per casi semplici:

// Estrarre testo in 

/

(.*?)<\/p>/gs // Estrarre href da /

Differenza tra .* e .*? (greedy vs lazy)?

  • .* (greedy): Matcha il massimo possibile
  • .*? (lazy): Matcha il minimo possibile
Input: "

hello

world

" /

.*<\/p>/ → match: "

hello

world

" (tutto) /

.*?<\/p>/ → match: "

hello

" (solo primo tag)

Posso usare regex per validare email al 100%?

No. L'RFC 5322 (standard email) permette casi molto complessi. La regex completa è lunga 6000+ caratteri. Per produzione:

  • ✅ Usa regex semplice per validazione basic: /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  • ✅ Invia email di verifica per conferma reale
  • ❌ Non cercare la "regex perfetta" per email

Le regex sono case-sensitive?

Di default sì. Usa il flag `i` per ignorare maiuscole/minuscole:

/hello/.test("HELLO")   // false
/hello/i.test("HELLO")  // true

Risorse Correlate

Esplora altri strumenti utili di THEJORD:

Documentazione Esterna

Prova il RegEx Tester Ora →