Fundamentals 15 min read

Comprehensive Regular Expression Cheat Sheet for Common Validation Scenarios

This article provides a detailed cheat‑sheet of frequently used regular expressions for validating numbers, characters, dates, URLs, IP addresses, and other special formats, complete with explanations and ready‑to‑copy code snippets for developers needing quick pattern references.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Comprehensive Regular Expression Cheat Sheet for Common Validation Scenarios

1. Numeric Validation Expressions

Digits: ^[0-9]*$

Exact 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 optional 1‑2 decimal places: ^(\-)?\d+(\.\d{1,2})?$

Positive, negative or decimal: ^(\-|\+)?\d+(\.\d+)?$

Positive real number with two decimal places: ^[0-9]+(.[0-9]{2})?$

Positive real number with 1‑3 decimal places: ^[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 point: ^\d+(\.\d+)?$ or more complex version ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

Non‑positive floating point: ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ or ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

Positive floating point: ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ or a combined pattern handling integers as well.

Negative floating point: ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$

General floating point (optional sign): ^(-?\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‑Z, a‑z, 0‑9): ^[A-Za-z0-9]+$ or length‑restricted ^[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 length‑restricted ^\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}$

Allow specific punctuation: ^[%&',;=?$\"]+$ and exclude them with [^%&',;=?$\x22]+

Disallow 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 numbers (various 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 (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}?$

Username (letter start, 5‑16 chars, letters/digits/underscore): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$

Password (letter start, 6‑18 chars, letters/digits/underscore): ^[a-zA-Z]\w{5,17}$

Strong password (8‑10 chars, must contain 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)$

4. Additional Useful Regular Expressions

Money formats (various examples): ^[1-9][0-9]*$ , ^(0|[1-9][0-9]*)$ , ^(0|-?[1-9][0-9]*)$ , ^[0-9]+(.[0-9]+)?$ , ^[0-9]+(.[0-9]{2})?$ , ^[0-9]+(.[0-9]{1,2})?$ , ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ , ^([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 characters: [^\x00-\xff]

Blank line removal: \n\s*\r

HTML tag extraction: <(\S*?)[^>]*>.*?</\1>|<.*? />

Leading/trailing whitespace: ^\s*|\s*$ or (^\s*)|(\s*$)

QQ number (>=10000): [1-9][0-9]{4,}

Chinese postal code: [1-9]\d{5}(?!\d)

IPv4 address simple: \d+\.\d+\.\d+\.\d+

IPv4 address strict: ((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

IPv6 address: (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|...|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|...)))

Subnet mask: same pattern as IPv4 above.

Date validation with leap year support: ^(?:(?!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)$

Comment extraction: <!--(.*?)-->

CSS property detection: ^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}

HTML link extraction (complex example): (<a\s*(?!.*\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^" rel="external nofollow" ]+)("...)

Image source extraction: \< *[img][^\\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)

Hex colour code: ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

File extension validation (example for .txt): ^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$

IE version detection: ^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

PythonValidationStringregular expressionsregexdata validationpatterns
Python Programming Learning Circle
Written by

Python Programming Learning Circle

A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.