Regex for UK postcode
UK postcode in either compact or spaced form.
The pattern
^[A-Z]{1,2}\d[A-Z\d]?\s?\d[A-Z]{2}$
What it matches
SW1A 1AAM1 1AEB33 8THCR0 6XHEC1A 1BB
What it doesn't match
12345SW1ASW1A 1ASW1A1AAA
Notes & gotchas
UK postcodes have an area+district half and a sector+unit half, optionally separated by a space. Format varies (A1 1AA, A1A 1AA, AA1 1AA, AA1A 1AA, AA11 1AA, etc.) but this pattern covers all common forms.
Code in your language
Use the explainer's Code tab to generate ready-to-paste snippets in JavaScript, Python, Java, .NET, Go, Ruby, and PHP for this pattern.
Open in explainer →About this pattern
UK identifier formats are set by HMRC, Royal Mail, and the BACS payments scheme. The regex here matches the format; full validation may need an additional checksum or lookup.
Quick usage in different languages
Once you've validated a candidate value matches this pattern, you'll typically use it inside your application code. Each language has its own regex syntax:
- JavaScript:
new RegExp(pattern).test(value) - Python:
re.match(pattern, value)with raw strings:r"pattern" - Java:
Pattern.compile(pattern).matcher(value).matches() - C# / .NET:
Regex.IsMatch(value, pattern) - Go:
regexp.MustCompile(pattern).MatchString(value)— Go uses RE2 so some advanced features aren't available - Ruby:
value =~ /pattern/orpattern.match?(value) - PHP:
preg_match('/pattern/', $value)
The explainer's Code tab generates these for any pattern you paste — including the right escaping and idioms for each language.
Common pitfalls
- Anchors matter. If the pattern uses
^and$it expects the entire input to match. To find this pattern inside a longer text, remove the anchors and use the/gflag. - Case sensitivity. Letter ranges like
[A-Z]only match uppercase. Use theiflag or[A-Za-z]for case-insensitive matching. - Escape user input. If you're building a regex from a string variable, escape regex metacharacters first to avoid bugs or injection.
- Performance. For this specific pattern the risk is low, but be cautious of nested quantifiers when adapting it — they can cause exponential backtracking on adversarial input.
See also
Browse all 300 patterns in the library, or open this regex in the interactive explainer for a token-by-token breakdown, live testing, and code in seven languages.
Want more patterns? Browse the full library →