Mastering Regex: Essential Patterns for Validating Numbers, Text, and URLs
This guide compiles a comprehensive collection of regular expressions for validating numeric formats, character sets, special inputs like emails and URLs, as well as IP addresses, dates, and other common data patterns, providing clear examples and explanations for developers.
1. Number Validation Expressions
Number:
^[0-9]*$n-digit number:
^\d{n}$At least n digits:
^\d{n,}$m‑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 with optional decimal:
^(-|\+)?\d+(\.\d+)?$Positive integer with exactly two decimal places:
^[0-9]+(\.[0-9]{2})?$Positive integer 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:
^(-?\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 (letters and digits):
^[A-Za-z0-9]+$or
^[A-Za-z0-9]{4,40}$Any characters, length 3‑20:
^.{3,20}$Only letters (A‑Z, a‑z):
^[A-Za-z]+$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, letters, digits, underscore:
^[\u4E00-\u9FA5A-Za-z0-9_]+$Chinese and letters/digits without underscore:
^[\u4E00-\u9FA5A-Za-z0-9]+$or
^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$Disallow specific symbols (% & ', ; = ? $ "):
[^%&',;=?$\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|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$Phone number (various formats):
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$Domestic phone (e.g., 0511-4405222):
\d{3}-\d{8}|\d{4}-\d{7}ID 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 (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 Input Formats
Acceptable forms include "10000.00", "10,000.00", "10000", and "10,000".
Basic non‑zero number:
^[1-9][0-9]*$Zero or non‑zero number:
^(0|[1-9][0-9]*)$Allow optional leading minus (though money is usually non‑negative):
^(0|-?[1-9][0-9]*)$Number with optional decimal part (at least one digit after dot):
^[0-9]+(\.[0-9]+)?$Two‑decimal‑place requirement:
^[0-9]+(\.[0-9]{2})?$One or two decimal places:
^[0-9]+(\.[0-9]{1,2})?$Allow commas as thousand separators:
^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$General form with optional commas:
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(\.[0-9]{1,2})?$Other Useful Regex
XML file name:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[xX][mM][lL]$Chinese character range:
[\u4e00-\u9fa5]Double‑byte characters:
^\x00-\xffBlank line removal:
\n\s*\rHTML tag matching (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)IP address (basic):
\d+\.\d+\.\d+\.\d+IP‑v4 (validated range):
\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]?)\bIP‑v6:
<code>(([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]))</code>Subnet mask:
<code>((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))</code>Comprehensive date validation (yyyy‑mm‑dd, leap year aware):
<code>^(?:(?!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))$</code>HTML comment extraction:
<!--(.*?)-->CSS property extraction:
^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}Page hyperlink extraction (example pattern):
(<a\s*(?!.*\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^" rel="external nofollow" ]+)")Image source extraction:
\< *[img][^\\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)Hex color code extraction:
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$File extension validation (e.g., .txt):
^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$IE version detection (5‑8, excluding Trident 5‑9):
^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$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.