Mastering Common Regex Patterns for Data Validation
This article provides a comprehensive collection of regular expression patterns for validating numbers, characters, emails, URLs, IP addresses, dates, and other common input formats, offering developers ready-to-use solutions for robust data validation in applications.
1. Number Validation Expressions
Digits:
^[0-9]*$Exactly n digits:
^\d{n}$At least n digits:
^\d{n,}$m‑n digits:
^\d{m,n}$Zero or non‑zero leading numbers:
^(0|[1-9][0-9]*)$Non‑zero start with up to two decimal places:
^([1-9][0-9]*)+(\.[0-9]{1,2})?$Positive/negative numbers with 1‑2 decimal places:
^(\-)?\d+(\.\d{1,2})?$Signed numbers with optional decimals:
^(\-|\+)?\d+(\.\d+)?$Positive real numbers with two decimals:
^[0-9]+(\.[0-9]{2})?$Positive real numbers with 1‑3 decimals:
^[0-9]+(\.[0-9]{1,3})?$Non‑zero positive integer:
^[1-9]\d*$or
^([1-9][0-9]*){1,3}$or
^\+?[1-9][0-9]*$Non‑zero negative integer:
^\-[1-9]\d*$Non‑negative integer:
^\d+$or
^[1-9]\d*|0$Non‑positive integer:
^-?[1-9]\d*|0$or
^((\-\d+)|(0+))$Non‑negative floating number:
^\d+(\.\d+)?$or complex form
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$Non‑positive floating number:
^((\-\d+(\.\d+)?)|(0+(\.0+)?))$or
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$Positive floating number:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$or
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$Negative floating number:
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$or
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$General floating number:
^(-?\d+)(\.\d+)?$or
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$2. Character Validation Expressions
Chinese characters:
^[\u4e00-\u9fa5]{0,}$Alphanumeric:
^[A-Za-z0-9]+$or
^[A-Za-z0-9]{4,40}$Any characters length 3‑20:
^.{3,20}$Only letters:
^[A-Za-z]+$Only uppercase letters:
^[A-Z]+$Only lowercase letters:
^[a-z]+$Alphanumeric only:
^[A-Za-z0-9]+$Alphanumeric with underscore:
^\w+$or
^\w{3,20}Chinese, English, digits, underscore:
^[\u4E00-\u9FA5A-Za-z0-9_]+$Chinese, English, digits (no underscore):
^[\u4E00-\u9FA5A-Za-z0-9]+$or
^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$Exclude specific symbols:
[^%&',;=?$\x22]+Exclude tilde:
[^~\x22]+3. Special Requirement Expressions
Email address:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$Domain name:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?Internet URL:
[a-zA-z]+://[^\s]*or
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$Mobile phone number (China):
^(13[0-9]|14[5|7]|15[0-9]|18[0-9])\d{8}$Telephone number formats:
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$Domestic telephone (e.g., 0511-4405222):
\d{3}-\d{8}|\d{4}-\d{7}Identity card number (15 or 18 digits):
^\d{15}|\d{18}$Short ID (digits, optional trailing x):
^([0-9]){7,18}(x|X)?$or
^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$Account name (starts with letter, 5‑16 chars, letters/digits/underscore):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$Password (starts with letter, 6‑18 chars, letters/digits/underscore):
^[a-zA-Z]\w{5,17}$Strong password (8‑10 chars, includes upper, lower, digit, no special chars):
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$Date format (yyyy‑mm‑dd):
^\d{4}-\d{1,2}-\d{1,2}Month (01‑12):
^(0?[1-9]|1[0-2])$Day of month (01‑31):
^((0?[1-9])|((1|2)[0-9])|30|31)$Money formats (allow commas and up to two decimals):
^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$or
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$XML file name:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[xX][mM][lL]$Chinese character regex:
[\u4e00-\u9fa5]Double‑byte character:
^\x00-\xffBlank line removal:
\n\s*\rHTML tag regex (simplified):
<(\S?)[^>]>.*?</\1>|<.*? />Trim leading/trailing whitespace:
^\s|\s$QQ number (starts from 10000):
[1-9][0-9]{4,}Chinese postal code (6 digits):
[1-9]\d{5}(?!\d)IPv4 address:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\bIPv6 address:
(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))Subnet mask:
((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))Full date validation (yyyy‑mm‑dd, leap year aware):
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$Efficient Ops
This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.