Vai al contenuto
ToolMug

Pattern regex comuni

Espressioni regolari pronte all'uso per la validazione quotidiana: email, URL, domini, indirizzi IPv4 e MAC, interi, decimali e importi, date e orari, nomi utente, password robuste, colori esadecimali, UUID e versioni semantiche, oltre a formati cinesi per telefoni, documenti d'identità e CAP. Ogni pattern ha descrizione ed esempi validi e non validi: puoi copiarlo o provarlo nel riquadro.

Funziona nel tuo browser: nulla di ciò che inserisci viene caricato

  • Indirizzo email

    Formato email comune con punti, segni più e domini a più livelli

    /^[\w.+-]+@[\w-]+(\.[\w-]+)+$/

    ✓ name@example.com a.b+tag@mail.co.uk✗ name@ @example.com a b@example.com

  • URL (http/https)

    Inizia con http:// o https:// e non contiene spazi

    /^https?:\/\/[^\s/$.?#][^\s]*$/i

    ✓ https://example.com/path?q=1 http://localhost:8080✗ ftp://example.com example.com https:// bad

  • Nome di dominio

    Dominio a più livelli con lettere, cifre e trattini

    /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/

    ✓ example.com sub.example.co.uk✗ -bad.com example exa_mple.com

  • Indirizzo IPv4

    Quattro numeri da 0 a 255 senza zeri iniziali

    /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/

    ✓ 192.168.1.1 8.8.8.8 255.255.255.0✗ 256.1.1.1 1.2.3 01.2.3.4

  • Indirizzo MAC

    Sei coppie di cifre esadecimali separate da due punti o trattini

    /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/

    ✓ 00:1A:2B:3C:4D:5E 00-1a-2b-3c-4d-5e✗ 001A2B3C4D5E 00:1A:2B:3C:4D

  • Numero mobile cinese

    11 cifre che iniziano con 13–19, senza +86

    /^1[3-9]\d{9}$/

    ✓ 13800138000 19912345678✗ 12345678901 1380013800 +8613800138000

  • Numero fisso cinese

    Prefisso più numero, eventualmente separati da un trattino

    /^0\d{2,3}-?\d{7,8}$/

    ✓ 010-12345678 0755-1234567 02112345678✗ 12345678 010-123

  • Carta d’identità cinese (18 cifre)

    Controlla lunghezza del codice regionale e data di nascita; l’ultimo carattere può essere X. Il checksum non viene verificato.

    /^[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]$/

    ✓ 11010519491231002X 440308199901010012✗ 11010519491331002X 1101051949123100

  • CAP cinese

    Sei cifre

    /^\d{6}$/

    ✓ 100000 010000✗ 10000 1000000

  • Targa cinese

    7 caratteri per le targhe normali, 8 per i veicoli a nuova energia

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

    ✓ 京A12345 粤BD12345 沪A1234学✗ 京12345 京AI2345

  • Solo caratteri cinesi

    Solo ideogrammi CJK comuni

    /^[\u4e00-\u9fa5]+$/

    ✓ 中文 正则表达式✗ 中文abc

  • Numero QQ

    5–11 cifre, non inizia con 0

    /^[1-9]\d{4,10}$/

    ✓ 10001 123456789✗ 01234 1234

  • Numero di carta bancaria

    16–19 cifre; la validità richiede anche un controllo Luhn

    /^[1-9]\d{15,18}$/

    ✓ 6222021234567890123 4111111111111111✗ 0222021234567890 622202123456

  • Numero intero

    Eventualmente negativo

    /^-?\d+$/

    ✓ 0 -42 12345✗ 1.5 1e3

  • Intero positivo

    Senza zeri iniziali

    /^[1-9]\d*$/

    ✓ 1 100✗ 0 01 -1

  • Numero decimale

    Eventualmente negativo, con cifre su entrambi i lati del punto

    /^-?\d+(?:\.\d+)?$/

    ✓ 3.14 -0.5 42✗ .5 1. 1,000

  • Importo monetario

    Non negativo con al massimo due decimali

    /^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/

    ✓ 0 99.9 1234.56✗ 01.00 1.234 -1

  • Data (AAAA-MM-GG)

    Mese 01–12 e giorno 01–31; la durata dei mesi non viene verificata

    /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/

    ✓ 2026-09-26 1999-12-31✗ 2026-13-01 2026-9-26 26-09-2026

  • Ora (HH:MM[:SS])

    Orologio a 24 ore, secondi facoltativi

    /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/

    ✓ 09:30 23:59:59✗ 24:00 9:30 12:60

  • Nome utente

    Inizia con una lettera; 4–16 lettere, cifre o trattini bassi

    /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/

    ✓ alice_01 Bob2026✗ 1alice ab bad-name

  • Password sicura

    Almeno 8 caratteri con maiuscole e minuscole, una cifra e un simbolo

    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$/

    ✓ Passw0rd! Aa1@aaaa✗ password Password1 Aa1@

  • Colore hex

    #RGB o #RRGGBB

    /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/

    ✓ #fff #0F766E✗ fff #ffff #12345g

  • UUID

    Formato UUID standard (versioni 1–8)

    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i

    ✓ 123e4567-e89b-42d3-a456-426614174000✗ 123e4567-e89b-42d3-c456-426614174000 123e4567e89b42d3a456426614174000

  • Versione semantica

    MAJOR.MINOR.PATCH con pre-release e metadati di build facoltativi

    /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/

    ✓ 1.0.0 2.1.3-beta.1+build.5✗ 1.0 01.0.0 v1.0.0

  • Coppia di tag HTML

    Trova tag di apertura e chiusura corrispondenti, catturando nome e contenuto del tag

    /<([a-zA-Z][\w-]*)\b[^>]*>([\s\S]*?)<\/\1>/g

    ✓ <b>bold</b> <a href="#">link</a>✗ <b>unclosed plain text

  • Riga vuota

    Con il flag m trova righe vuote o composte solo da spazi, ad esempio per rimuoverle

    /^\s*$/m

    ✓ ✗ text

I pattern usano la sintassi JavaScript e funzionano nella maggior parte dei linguaggi, come Java, Python e Go (attenzione all’escape della barra rovesciata). Controllano solo il formato; per sapere se un documento o un numero di carta è reale servono checksum o validazione ufficiale.

Come si usa

  1. Cerca un formato o filtra per categoria.
  2. Fai clic su Copia per prendere il pattern; raddoppia le barre inverse quando lo inserisci in una stringa.
  3. Digita nel riquadro sotto una scheda per vedere subito se il testo corrisponde.

Opzioni spiegate

Sintassi
Scritta per JavaScript e compatibile con linguaggi come Java, Python, Go e PHP; dentro i valori stringa, raddoppia le barre inverse.
Corrispondenza dell'intera stringa
I pattern di validazione usano gli ancoraggi ^ e $ per richiedere la corrispondenza dell'intero input. Per cercare in un testo più lungo, rimuovi gli ancoraggi e aggiungi il flag g.
Formato e validità
Un pattern controlla solo il formato. Per sapere se un documento o un numero di carta è reale servono checksum o verifica ufficiale.

Come è costruito un pattern: l’esempio dell’IPv4

Il pattern per l’IPv4 mostra la struttura tipica di una regex di validazione. Un ottetto è scritto come quattro alternative, provate in ordine, così ciascuna accetta solo 0–255:

25[0-5]      250–255
2[0-4]\d     200–249
1\d\d        100–199
[1-9]?\d     0–99, senza zero iniziale

Il pattern completo è (octet\.){3}octet, ancorato con ^ e $. Ecco perché 192.168.1.1 corrisponde mentre 256.1.1.1, 01.2.3.4 e 1.2.3 no.

Formato non significa validità

Un pattern controlla solo la forma. Il pattern delle date accetta 2026-02-30 perché ammette il giorno 30 in ogni mese, e rifiuta 2026-13-01 perché il mese 13 non esiste. Per le date vere, dopo il controllo con la regex analizza il valore con la libreria di date del tuo linguaggio.

Domande frequenti

Perché la regex per le email non è completamente conforme a RFC?

Una regex pienamente conforme a RFC 5322 sarebbe enorme e rifiuterebbe pochi errori reali. Usa un controllo permissivo e conferma l'indirizzo con un'email di verifica.

Come posso eseguire il debug di una regex più complessa?

Usa il tester regex: evidenzia ogni corrispondenza e gruppo e può provare anche le sostituzioni.

Questi pattern supportano Unicode?

La maggior parte è pensata per input ASCII. Aggiungi il flag u e proprietà Unicode come \p{L} se devi accettare lettere di qualsiasi scrittura.

Privacy

Questo strumento funziona interamente nel tuo browser. File e testi vengono elaborati sul tuo dispositivo e non vengono mai caricati sui nostri server.

Strumenti correlati