Comprehensive Collection of Regular Expressions for Validating Numbers, Characters, and Common Formats
This article provides an extensive set of regular expressions for validating various numeric formats, character sets, special requirements such as email, URLs, phone numbers, dates, IP addresses, and other common patterns, accompanied by clear explanations and usage examples for developers.
1. Number Validation Regular Expressions
Simple digit string (any length): ^[0-9]*$
Exact n‑digit number: ^\d{n}$
At least n digits: ^\d{n,}$
m‑to‑n digits: ^\d{m,n}$
Zero or non‑zero leading number: ^(0|[1-9][0-9]*)$
Non‑zero leading number with up to two decimal places: ^([1-9][0-9]*)+(.[0-9]{1,2})?$
Positive or negative number with 1‑2 decimal places: ^(\-)?\d+(\.\d{1,2})?$
Signed number (optional +/‑) with optional decimal part: ^(\-|\+)?\d+(\.\d+)?$
Positive real number with exactly 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][]0-9"*$ or ^-\[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 ^[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 (optional sign): ^(-?\d+)(\.\d+)?$ or ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
2. Character Validation Regular Expressions
Chinese characters (any length): ^[\u4e00-\u9fa5]{0,}$
Alphanumeric (letters and digits): ^[A-Za-z0-9]+$ or ^[A-Za-z0-9]{4,40}$
Any characters with length 3‑20: ^.{3,20}$
Only uppercase letters: ^[A-Z]+$
Only lowercase letters: ^[a-z]+$
Alphanumeric string: ^[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}$
Allow specific punctuation characters: [^%&',;=?$\x22]+
Disallow tilde (~): [^~\x22]+
3. Special‑Purpose Regular 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|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
Telephone number (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 number (15 or 18 digits): ^\d{15}|\d{18}$
Short ID (digits ending with optional x/X): ^([0-9]){7,18}(x|X)?$ or ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
Account name (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): ^(?=.*\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 format examples (various patterns): ^[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]+\\.[x|X][m|M][l|L]$
Chinese character regex: [\u4e00-\u9fa5]
Double‑byte character (including Chinese): [^\x00-\xff]
Blank line regex: \n\s*\r
HTML tag regex: <(\S*?)[^>]*>.*?</\1>|<.*? />
Leading/trailing whitespace regex: ^\s*|\s*$ or (^\s*)|(\s*$)
QQ number (starts with non‑zero, at least 5 digits): [1-9][0-9]{4,}
Chinese postal code (6 digits, not starting with 0): [1-9]\d{5}(?!\d)
IP address (IPv4 simple): \d+\.\d+\.\d+\.\d+
IP address (IPv4 strict): ((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
IP‑v4 address word boundary version: \\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]?)\\b
IP‑v6 address validation: (([0-9a-fA-F]{1,4}:){7,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))
Date validation (yyyy‑mm‑dd with leap year check): ^(?:(?!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)$
Extract HTML comments: <!--(.*?)-->
Find CSS property: ^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}
Extract page hyperlinks (example pattern): (<a\s*(?!.*\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^" rel="external nofollow" ]+)("((?!.*\brel=)[^>]*)(?:[^>]*)>)
Extract image URLs: \\< *[img][^\\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)
Extract color codes (hex): ^#([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, not Trident 5‑9): ^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$
Laravel Tech Community
Specializing in Laravel development, we continuously publish fresh content and grow alongside the elegant, stable Laravel framework.
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.