正则表达式:Regex(Regular Expression)就是字符串校验的机制,它是跨平台,跨语言的:Java/JS/c++/sql

按需求校验做一些要求判断,例如:账号规范、密码强度、身份证、电话号码/邮箱等。

  • 语法:

    • 取值范围: [A-Z] 匹配26个大写字母中的一个

      [a-z]` 匹配26个小写字母中的一个

      [0-9] 匹配0至9数字中的一个

      [A-Za-z0-9] 匹配26个大写字母、26个小写字母和0至9数字中的一个

      [ajgu]匹配ajgu中任意一个字符。如果是不连续的取值,则将字符全都写上

      [汉字]匹配是有"汉字"两个字中的一个

      \d等价于[0-9]匹配一个任意数字

      \D等价于[^0-9] 匹配一个任意非数字字符 ^是除此之外

      \w等价于[A-Za-z_0-9]匹配任意一个字符

      \W等价于[^A-Za-z_0-9]匹配除了A-Za-z_0-9之外的任意一个字符

    • 取值的个数:

      ?等价于匹配长度{0, 1} 0<= 个数 <=1 例如:[A-Z]?表示匹配A-Z中任意0~1个字符

      *等价于匹配长度{0, } 个数 >= 0

      +等价于匹配长度{1,} 个数 >= 1

      {n, m} 匹配长度在n到m之间 n<= 个数 <=m 例如:[A-Z]{2, 6}

      {n, } 匹配长度大于等于n n<= 个数

      {n} 匹配n个

  • 常用运算符与表达式:

    ^ 表示正则表达式开始(可写可不写),匹配输入字符串开始的位置。如果是在取值范围[]中使用,则表示除了…

    $ 表示正则表达式结尾(可写可不写),匹配输入字符串结尾的位置 如果正则表达式使用了^$表示全匹配,包括顺序 加^$的话就代表把整个要匹配的字符串当成一个整体做一次匹配, 而不加则一个字符串可以匹配多次,只能代表这个字符串中有符合条件的并不代表改字符串符合条件

    [a-z] 可以用来匹配任意位置上的小写字母: “…a…”

    ^[a-z] 只能匹配以小写字母为行首的行: “a…”

    [a-z]$ 只能匹配以小写字母为行尾的行: “…a”

    ^[a-z]$ 只能匹配只有一个小写字母的行: “a…a”

    () 域段(一组数据,就是一个整体)

    [] 包含,默认是一个字符长度

    [^] 不包含,默认是一个字符长度

    . 任何单个字符(. 字符点)但是注意:在java中 \.

    |

    & 并且

    \ 转义

    ^[0-9]+(.[0-9]{1,2})?$ 表示匹配 0-9的数字1个到任一个 和( . 和 0-9 一个或者两个)括号中可以有0或者1个

    匹配一个手机号码:^[1][3-9][0-9]{9}

  • 主要使用在String相关方法中:

    1. boolean matches(String regex) 判断当前String对象是否满足正则表达式

    2. String[] split(String regex) 当前String对象按照正则表达式拆分

    3. String replaceAll(String regex, String replaceAll)

      当前String对象将满足正则表达式regex的部分全部替换为指定的字符串replaceAll

    4. String replaceFirst(String regex, String replaceFirst)

      当前String对象将满足正则表达式regex第一个出现的部分替换为指定的字符串replaceFirst