正则表达式: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
-