人人都看得懂的正则表达式教程

转载自 人人都看得懂的正则表达式教程


前言

本文有助于快速上手正则表达式, 但语法非常不全, 因此写出的表达式不够简练.

编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。
很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。
在这篇文章中,我将试图让大家明白什么是正则表达式,以及如何更轻松地学习正则表达式。

3个重要的正则式命令

记住正则语法最好的办法就是记住这三样东西:BCD

  • Bracket, 括号
    • 方括号 [需要匹配的字符]
    • 花括号 {指定匹配字符的数量}
    • 圆括号 (字符分组)
  • Caret, 插入符号
    • ^ 表示字符串开始
  • Dollars, 美元符号
    • $ 表示字符串结束

举例

  • [a-g]{3}
    输入的字符在a-g之间并且长度为3
  • [a-g]{1,3}
    输入的字符在a-g之间并且最大长度为3最小长度为1
  • ^[0-9]{8}$
    匹配像91230456, 01237648那样的固定8位数
  • ^[0-9]{3,7}$
    验证最小长度为3最大长度为7的数字,如:123, 1274667, 87654
  • ^[a-z]{3}[0-9]{7}$
    验证像LJI1020那样的发票编号,前3个是字母剩余为8位长度的数字
  • ^www[.][a-z]{1,15}[.](com|org)$
    验证简单的网址URL格式, 域名是长度在1-15的英文字母
  • ^[a-zA-Z0-9]{1,10}@[a-zA-Z]{1,10}.(com|org)$
    验证email格式
  • ^(([0-9])|([0-1][0-9])|([0-2][0-5]))$
    验证值在0-25的数字
  • ^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .]([1-9]|0[1-9]|1[0-2])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$
    验证DD/MM/YYYY格式的日期
      - `([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])` DD允许数值为`1-9,01-09,10-19,20-29,30-31`
      - `[- / .]` 允许的日期分隔符
      - `([1-9]|0[1-9]|1[0-2])` MM月份的数值 `1-9,01-09,10-12`
      - `(1[9][0-9][0-9]|2[0][0-9][0-9])` YY年份的数值 `1900-2099`
    

快捷命令

实际命令 快捷命令
[0-9] d
[a-z][0-9][_] w
0次或多次发生 *
1次或多次发生 +
0次或1次发生 ?

转载自 人人都看得懂的正则表达式教程