正则表达式(Regex):使用特殊的符号来做校验,目标是操作字符串,例如手机号码、邮箱、身份证
优缺点:
简化书写,但是阅读性较差
正则表达式的语法规则:
[abc] : 表示只能出现一个字符,而且这个字符只能是 a,b,c中的其中一个
[a-zA-Z] : 表示一个字符,该字符为a-z或者A-Z中的某一个
\d : 表示数字 也可以使用 [0-9] 代替
X{n} : X字符出现的次数刚好为n次 比如 [0-9]{2} 表示出现两个字符,为数字
X{n,} : X字符至少出现n次
X{n,m} : X 字符至少出现n次,至多m次
(X)+ : 表示X至少出现一次 ,等于 X{1,}
| : 或者的意思 如 ([a-z]+|\\d+) 表示可以出现至少一次小写字母或数字
\\. : 表示 “.”
在前端中使用正则表达式的时候,比如出现在<input> 标签中的时候, 在标签中添加 pattern=“正则内容” required="required" 就可以了
正则表达式的转义字符:
\D : 非数字,除了[0-9]
\s : 空白字符(如空格,\t制表位, \n换行)
\S : 非空白字符
\w : 单词字符: [a-zA-z_0-9]
\W : 非单词字符
在正则表达式中, “^” 表示正则的其实标志,“$” 表示结束标记,(也可以不写)
在Java中进行字符的正则校验可以使用下面这样的方式:
String data = "a";
String regex = "^\w$";
boolean flag = data.matches(regex);
System.out.println(flag);
只是用前台校验的话可以通过工具进行代码的修改,绕过校验,这样比较危险
正则的综合应用:
用户名只能为字母,长度为6-12位:[a-zA-z]{6,12}
密码只能为数字,长度至少为6位: [0-9]{6,} , \\d{6,}
手机号校验: [1][3578]\\d{9}
邮箱校验:[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+