Rexact
Cheatsheet

Regex Ethereum address

An Ethereum address isn't just "0x + 40 hex characters": the EIP-55 standard encodes a checksum directly into letter casing, computed from a Keccak-256 hash. A GitHub gist perfectly illustrates the limit of a plain regex: it compares two identical addresses except for a single case change - one with a valid checksum, one invalid - and both pass the exact same regex test identically. None of the three attempts compared here compute that checksum; it's structurally not possible with a regex alone.

/^0x[a-fA-F0-9]{40}$/
passes 20/20 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^0x[a-fA-F0-9]{40}$", "");
re.test(input);

Limits

  • Valide seulement la FORME (0x + 40 hex) : ne calcule jamais le checksum EIP-55 (Keccak-256 de l'adresse en minuscules) — deux adresses identiques sauf un seul caractère de casse, l'une au checksum valide et l'autre non, passent ce motif de façon strictement identique.
  • Une adresse tout en minuscules ou tout en majuscules est délibérément autorisée par EIP-55 lui-même (absence de checksum, rétrocompatibilité) : ce motif ne peut pas distinguer ce choix délibéré d'une simple négligence de casse.
  • Ne consulte aucune blockchain : ne peut pas confirmer qu'une adresse a déjà reçu une transaction, ni qu'elle correspond à un contrat plutôt qu'à un compte détenu par une clé privée (EOA).
  • Ne couvre que le format d'adresse Ethereum L1 classique : les adresses au format CAIP-10 (multi-chaînes, « eip155:1:0x… ») ou les identifiants ENS (« vitalik.eth ») suivent des formats complètement différents.