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.
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).*$
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.
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.