Mastering Common Regex Patterns for Data Validation
This article provides a comprehensive collection of regular expression patterns for validating numbers, characters, emails, URLs, IP addresses, dates, and other common input formats, offering developers ready-to-use solutions for robust data validation in applications.
1. Number Validation Expressions
Digits: ^[0-9]*$ Exactly 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 1‑2 decimal places: ^(\-)?\d+(\.\d{1,2})?$ Signed numbers with optional decimals: ^(\-|\+)?\d+(\.\d+)?$ Positive real numbers with two decimals: ^[0-9]+(\.[0-9]{2})?$ Positive real numbers with 1‑3 decimals: ^[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 number: ^\d+(\.\d+)?$ or complex form ^[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: ^[A-Za-z0-9]+$ or ^[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 ^\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}$ Exclude specific symbols: [^%&',;=?$\x22]+ Exclude 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 number 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, optional trailing 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 formats (allow commas and up to two decimals): ^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ or ^([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 character: ^\x00-\xff Blank line removal: \n\s*\r HTML tag regex (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) IPv4 address:
\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]?)\bIPv6 address:
(([0-9a-fA-F]{1,4}:){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))Full date validation (yyyy‑mm‑dd, leap year aware):
^(?:(?!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)$Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
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.
