1. 什么是正则校验?
正则校验就是使用正则表达式对字符串进行匹配和验证,以确定字符串是否符合特定的模式。在我们平时开发过程中常用到正则校验,比如,当你写一个用户注册登录功能时一定不希望用户去胡乱填写邮箱、手机号码等信息,再比如,当你写一个收集用户信息的系统时,也不希望用户去填写无效的证件号,等等。于是,在用户提交信息,到了后端后,我们要利用正则校验去验证一下,只有符合条件的数据,才给它入库。
2. 下面介绍一些基本的符号概念:
“.”
:匹配任意一个字符,除换行符外。“*”
:匹配前面的子表达式零次或多次。“+”
:匹配前面的子表达式一次或多次。“?”
:匹配前面的子表达式零次或一次。“[]”
:定义一个字符类,匹配方括号内的任意字符。“^”
:匹配字符串的开始。“$”
:匹配字符串的结束。“\d”
:匹配一个数字,等价于[0-9]
。“\w”
:匹配一个字母、数字或下划线字符,等价于[a-zA-Z0-9_]
。“\s”
:匹配一个空白字符,包括空格、制表符、换页符等。
3. 一些常用的正则校验:
(1)验证电子邮件地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
“^[a-zA-Z0-9._%+-]+”
:匹配以字母、数字、点、下划线、百分号、加号或减号开头的一段字符串。“@[a-zA-Z0-9.-]+”
:匹配一个@
后跟一个或多个字母、数字、点或减号。“\.[a-zA-Z]{2,}$”
:匹配一个点后跟两个或更多的字母,并且字符串以此结束。
注:因为这个 “.” 是特殊符号,所以这里面需要用 “\.” 来表示转义,表示实际的 "."。
(2)验证手机号(11位)
^\d{10}$
^\d{10}$
:匹配一个以 10 位数字组成的字符串。
(3)验证密码(至少八位,包含字母数字)
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
“^(?=.*[A-Za-z])”
:匹配一个包含至少一个字母的字符串。“(?=.*\d)”
:匹配一个包含至少一个数字的字符串。“[A-Za-z\d]{8,}$”
:匹配由字母和数字组成的、至少 8 个字符长的字符串。
4. Java中的应用举例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexValidation {
public static boolean isValidEmail(String email) {
String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
public static void main(String[] args) {
String email = "example@example.com";
System.out.println("Is valid email: " + isValidEmail(email));
}
}