A cosa serve e come si usa questa regex?
Controllo formale delle cifre iniziali e della lunghezza per i principali circuiti di carte di credito (Visa 13/16 cifre, Mastercard 16 cifre, Amex 15 cifre, Discover 16 cifre).
Espressione Regolare (Pattern)
nessuno · Motori compatibili: JavaScript, PCRE/PHP, Python, Go, .NET
^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$
Integrazione nel codice
Snippet pronti all'uso// JavaScript (ES6+)
const regex = /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$/;
const isValid = regex.test(text);
// Estrazione match
const matches = text.match(regex);
<?php
// PHP 8.2+ (PCRE)
$pattern = '~^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$~';
$isValid = (bool) preg_match($pattern, $text);
// Estrazione con gruppi
if (preg_match($pattern, $text, $matches)) {
print_r($matches);
}
# Python 3 (re)
import re
pattern = r"^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$"
is_valid = bool(re.search(pattern, text))
# Estrazione match
match = re.search(pattern, text)
if match:
print(match.group(0))
// Go (regexp)
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$`)
isValid := re.MatchString(text)
fmt.Println(isValid)
}
// C# (.NET)
using System;
using System.Text.RegularExpressions;
bool isValid = Regex.IsMatch(text, @"^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$");
Come funziona (Spiegazione dettagliata)
4\d{12}(?:\d{3})?circuiti Visa (inizia con 4, 13 o 16 cifre).5[1-5]\d{14}circuiti Mastercard (inizia da 51 a 55, 16 cifre).3[47]\d{13}American Express (inizia con 34 o 37, 15 cifre).6(?:011|5\d{2})\d{12}circuiti Discover (16 cifre).
Casi d’uso consigliati
- Identificazione automatica del logo del circuito di pagamento nel form di checkout
- Pre-validazione lunghezza carta prima di inoltrare la richiesta a Stripe o PayPal
- Filtri di rilevamento dati sensibili PCI-DSS nei log
Esempi che corrispondono (Validi)
4 test passati4111111111111111
5500000000000004
378282246310005
6011000990139424
Esempi rifiutati (Non validi)
3 test respinti1234567890123456
4111-1111-1111-1111
411111111111
Limiti tecnici e avvertenze
- Non salvare mai i numeri completi di carte di credito sui propri server (normativa di sicurezza PCI-DSS). Usare sempre l’algoritmo di Luhn per validare il checksum finale.
Espressioni regolari correlate
Codice SWIFT/BIC
Valida la struttura di base di un codice bancario SWIFT/BIC da 8 o 11 caratteri.
Vedi schedaIBAN internazionale (Tutti i paesi)
Valida il formato generale di un codice IBAN internazionale (2 lettere del paese, 2 cifre di controllo e da 1 a 30 caratteri alfanumerici).
Vedi schedaCodice a barre EAN-13 (GTIN-13)
Valida il codice a barre commerciale internazionale EAN-13 (European Article Number) composto da 13 cifre numeriche.
Vedi schedaHai bisogno di collaudare questo pattern con i tuoi dati?
Apri il tester sandboxato con questa regex già caricata e verifica i gruppi di cattura.