正则表达式的常见用法及如何实现

文章目录正则常用元素:边界:字符类:数量词:逻辑:分组:常用正则表达式一、校验数字的表达式二、校验字符的表达式三、特殊需求表达式(Email,域名,手机号码等)

正则常用元素:

边界:

  • ^ 匹配开始
  • $ 匹配结束
  • \b 匹配零宽单词边界 (如:er\b 可以匹配never中的er,不能匹配herb中的er)

字符类:

  • \d 匹配数字,等价于[0-9]
  • \D 匹配非数字,等价于[^0-9]
  • \w 匹配字母数字字符下划线,等价于[A-Za-z0-9]
  • \W 匹配非词中字符,等价于[^\w]
  • \s 匹配空白符(空格、换行符、制表符、换页符等)

数量词:

  • X+ 匹配前表达式1次或多次
  • X* 匹配前表达式0次或多次
  • X? 匹配前表达式0次或1次

逻辑:

  • [^] 反义集合 ([ ^\abc]等价于[ ^a-c])

分组:

  • (X) 捕获X ( 用 /正则/.exec(式子)得到逐个捕获后的数组 )
  • (?:X) 使其不会捕获X

常用正则表达式

一、校验数字的表达式

  1. 数字:^ [0-9]*$
  2. n位的数字:^\d{n}$
  3. 至少n位的数字:^\d{n,}$
  4. m-n位的数字:^\d{m,n}$
  5. 零和非零开头的数字:^(0|[1-9][0-9]*)$
  6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
  7. 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
  8. 正数、负数、和小数:^(-|+)?\d+(.\d+)?$
  9. 有两位小数的正实数:^ [0-9]+(.[0-9]{2})?$
  10. 有1~3位小数的正实数:^ [0-9]+(.[0-9]{1,3})?$
  11. 非零的正整数:^ [1-9]\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
  12. 非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$
  13. 非负整数:^\d+$ 或 ^ [1-9]\d*|0$
  14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  15. 非负浮点数:^\d+(.\d+)?$ 或 ^ [1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
  16. 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$
    或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
  17. 正浮点数:^ [1-9]\d*.\d*|0.\d*[1-9]\d*$
    或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
  18. 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$
    或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
  19. 浮点数:^(-?\d+)(.\d+)?$
    或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

二、校验字符的表达式

  1. 汉字:^ [\u4e00-\u9fa5]{0,}$
  2. 英文和数字:^ [A-Za-z0-9]+$ 或 ^ [A-Za-z0-9]{4,40}$
  3. 长度为3-20的所有字符:^ {3,20}$
  4. 由26个英文字母组成的字符串:^ [A-Za-z]+$
  5. 由26个大写英文字母组成的字符串:^ [A-Z]+$
  6. 由26个小写英文字母组成的字符串:^ [a-z]+$
  7. 由数字和26个英文字母组成的字符串:^ [A-Za-z0-9]+$
  8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
  9. 中文、英文、数字包括下划线:^ [\u4E00-\u9FA5A-Za-z0-9_]+$
  10. 中文、英文、数字但不包括下划线等符号:^ [\u4E00-\u9FA5A-Za-z0-9]+$
    或 ^ [\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  11. 可以输入含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \̲"̲等字符:[^ %&',;=?\x22]+ 12
    禁止输入含有的字符:[^\x22]+

三、特殊需求表达式(Email,域名,手机号码等)

  1. Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

  2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

  3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$

  4. 手机号码:^(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}$

  5. 电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$

  6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

  7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

  8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

  9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^ [a-zA-Z][a-zA-Z0-9_]{4,15}$

  10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^ [a-zA-Z]\w{5,17}$

  11. 中文字符的正则表达式:[\u4e00-\u9fa5]

  12. url: (\w+:)//([/]+)(/[?]+)?(?:?([#]+))?(#.)?$
    协议:(\w+:)
    主机名:([^/]+)
    路径:(/[^?]+)
    搜索:(?([^#]+))
    哈希:(#.
    )