Common regular expressions

1. Expressions for checking numbers

  • Numbers: ^[0-9]*$
  • Numbers with n digits: ^\d{n}$
  • Numbers with at least n digits: ^\d{n,}$
  • Numbers with m-n digits: ^\d{m,n}$
  • Numbers starting with zero and non-zero: ^(0|[1-9][0-9]*)$
  • Numbers starting with non-zero and 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})$
  • Positive, negative, and 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][]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 point number: ^\d+(\.\d+)?$ or ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
  • Non-positive floating point number: ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ or ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
  • Positive floating point 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 point 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]*)))$
  • Floating point number: ^(-?\d+)(\.\d+)?$ or ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

2. Expression of check characters

  • Chinese characters: ^[\u4e00-\u9fa5]{0,}$
  • English and numbers: ^[A-Za-z0-9]+$ or ^[A-Za-z0-9]{4,40}$
  • All characters with a length of 3-20: ^.{3,20}$
  • A string of 26 English letters: ^[A-Za-z]+$
  • A string of 26 uppercase English letters: ^[A-Z]+$
  • A string of 26 lowercase English letters: ^[a-z]+$
  • A string consisting of numbers and 26 English letters: ^[A-Za-z0-9]+$
  • A string consisting of numbers, 26 English letters or underscores: ^\w+$ or ^\w{3,20}$
  • Chinese, English, numbers including underscores: ^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • Chinese, English, numbers but not including underscores and other symbols: ^[\u4E00-\u9FA5A-Za-z0-9]+$ or ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • You can enter characters containing ^%&',;=?$\" and so on: [^%&',;=?$\x22]+
  • It is forbidden to enter characters containing ~: [^~\x22]+

Three, special demand 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: ^(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 ("XXX-XXXXXXX", "XXXX-XXXXXXXX", "XXX-XXXXXXX", "XXX-XXXXXXXX", "XXXXXXX", and "XXXXXXXX"): ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • Domestic phone numbers (0511-4405222, 021-87888822): \d{3}-\d{8}|\d{4}-\d{7}
  • Phone number regular expression (supports mobile phone numbers, 3-4 digit area codes, 7-8 digit live broadcast numbers, 1-4 digit extension numbers): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
  • ID number (15 or 18 digits), the last digit is the check digit, which may be a number or character X: (^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
  • Is the account legal (starts with a letter, 5-16 bytes are allowed, letters, numbers and underscores are allowed): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • Password (starts with a letter, length is between 6 and 18, can only contain letters, numbers and underscores): ^[a-zA-Z]\w{5,17}$
  • Strong password (must contain a combination of uppercase and lowercase letters and numbers, no special characters, length between 8-10): ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  • Date format: ^\d{4}-\d{1,2}-\d{1,2}
  • 12 months of the year (01~09 and 1~12): ^(0?[1-9]|1[0-2])$
  • 31 days of the month (01~09 and 1~31): ^((0?[1-9])|((1|2)[0-9])|30|31)$
  • Money input format:
    1. There are four forms of money that we can accept: "10000.00" and "10,000.00", and "10000" and "10,000" without "cents": ^[1-9][0-9]*$
    2. This represents any number that does not start with 0, but this also means that a character "0" does not pass, so we use the following form: ^(0|[1-9][0-9]*)$
    3. A 0 or a number that does not start with 0. We can also allow a minus sign at the beginning: ^(0|-?[1-9][0-9]*)$
    4. This represents a 0 or a number that may be negative and does not start with 0. Let the user start with 0. Remove the minus sign, because money can't be negative. Next we need to add the possible decimal part: ^[0-9]+(.[0-9]+)?$
    5. It must be noted that there should be at least one digit after the decimal point, so "10." is not passed, but "10" and "10.2" are passed: ^[0-9]+(.[0-9]{2})?$
    6. In this way, we stipulate that there must be two digits after the decimal point. If you think it is too strict, you can do it like this: ^[0-9]+(.[0-9]{1,2})?$
    7. This allows users to write only one decimal place. Next we should consider the comma in the number, we can do it like this: ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    8. 1 to 3 digits, followed by any number of commas + 3 digits, the comma becomes optional, not required: ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
    9. Note: This is the final result, don't forget"