Fundamentals 16 min read

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.

Laravel Tech Community
Laravel Tech Community
Laravel Tech Community
Comprehensive Collection of Regular Expressions for Validating Numbers, Characters, and Common Formats

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

backendfrontendValidationregular expressionsregexPattern Matching
Laravel Tech Community
Written by

Laravel Tech Community

Specializing in Laravel development, we continuously publish fresh content and grow alongside the elegant, stable Laravel framework.

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.