正则表达式: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相关方法中:
-
boolean matches(String regex) 判断当前String对象是否满足正则表达式
-
String[] split(String regex) 当前String对象按照正则表达式拆分
-
String replaceAll(String regex, String replaceAll)
当前String对象将满足正则表达式regex的部分全部替换为指定的字符串replaceAll
-
String replaceFirst(String regex, String replaceFirst)
当前String对象将满足正则表达式regex第一个出现的部分替换为指定的字符串replaceFirst
-