校验工具
ValidatorUtils 提供常用数据格式校验功能。
类信息
- 包名:
com.molandev.framework.util - 类名:
ValidatorUtils - 类型: 静态工具类
核心方法
isPhone - 手机号校验
java
public static boolean isPhone(String str)示例:
java
boolean valid = ValidatorUtils.isPhone("13812345678"); // true
boolean invalid = ValidatorUtils.isPhone("12345"); // falseisEmail - 邮箱校验
java
public static boolean isEmail(String str)示例:
java
boolean valid = ValidatorUtils.isEmail("user@example.com"); // true
boolean invalid = ValidatorUtils.isEmail("invalid@email"); // falseisIpAddress - IP地址校验
java
public static boolean isIpAddress(String str)示例:
java
boolean valid = ValidatorUtils.isIpAddress("192.168.1.1"); // true
boolean invalid = ValidatorUtils.isIpAddress("256.1.1.1"); // falseisUrl - URL校验
java
public static boolean isUrl(String str)示例:
java
boolean valid = ValidatorUtils.isUrl("https://www.example.com"); // true
boolean invalid = ValidatorUtils.isUrl("not a url"); // falseisNumeric - 纯数字校验
java
public static boolean isNumeric(String str)示例:
java
boolean valid = ValidatorUtils.isNumeric("12345"); // true
boolean invalid = ValidatorUtils.isNumeric("123abc"); // falseisAlphabetic - 纯字母校验
java
public static boolean isAlphabetic(String str)示例:
java
boolean valid = ValidatorUtils.isAlphabetic("Hello"); // true
boolean invalid = ValidatorUtils.isAlphabetic("Hello123"); // falseisAlphanumericWithUnderscore - 字母数字下划线
java
public static boolean isAlphanumericWithUnderscore(String str)示例:
java
boolean valid = ValidatorUtils.isAlphanumericWithUnderscore("user_123"); // true
boolean invalid = ValidatorUtils.isAlphanumericWithUnderscore("user-123"); // falsecontainsSpecialCharacters - 包含特殊字符
java
public static boolean containsSpecialCharacters(String str)示例:
java
boolean has = ValidatorUtils.containsSpecialCharacters("abc@123"); // true
boolean no = ValidatorUtils.containsSpecialCharacters("abc123"); // false完整示例
示例 1:表单校验
java
import com.molandev.framework.util.ValidatorUtils;
import java.util.HashMap;
import java.util.Map;
public class FormValidator {
public static Map<String, String> validate(String username, String email, String phone) {
Map<String, String> errors = new HashMap<>();
// 用户名校验
if (username == null || username.length() < 3) {
errors.put("username", "用户名至少3位");
} else if (!ValidatorUtils.isAlphanumericWithUnderscore(username)) {
errors.put("username", "用户名只能包含字母、数字、下划线");
}
// 邮箱校验
if (!ValidatorUtils.isEmail(email)) {
errors.put("email", "邮箱格式错误");
}
// 手机号校验
if (!ValidatorUtils.isPhone(phone)) {
errors.put("phone", "手机号格式错误");
}
return errors;
}
public static void main(String[] args) {
Map<String, String> errors = validate("user_123", "test@example.com", "13812345678");
if (errors.isEmpty()) {
System.out.println("校验通过");
} else {
System.out.println("校验失败:");
errors.forEach((field, msg) -> System.out.println(field + ": " + msg));
}
}
}示例 2:密码强度校验
java
import com.molandev.framework.util.ValidatorUtils;
public class PasswordValidator {
/**
* 校验密码强度
*/
public static boolean isStrongPassword(String password) {
if (password == null || password.length() < 8) {
return false;
}
// 必须包含字母
if (!password.matches(".*[a-zA-Z].*")) {
return false;
}
// 必须包含数字
if (!ValidatorUtils.isNumeric(password.replaceAll("[^0-9]", ""))) {
if (password.replaceAll("[^0-9]", "").isEmpty()) {
return false;
}
}
// 必须包含特殊字符
if (!ValidatorUtils.containsSpecialCharacters(password)) {
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isStrongPassword("weak")); // false(太短)
System.out.println(isStrongPassword("password123")); // false(无特殊字符)
System.out.println(isStrongPassword("Pass@123")); // true(强密码)
}
}示例 3:配置项校验
java
import com.molandev.framework.util.ValidatorUtils;
public class ConfigValidator {
public static class ServerConfig {
String host;
int port;
String adminEmail;
public boolean validate() {
// Host可以是域名或IP
if (!ValidatorUtils.isUrl("http://" + host) &&
!ValidatorUtils.isIpAddress(host)) {
System.out.println("Host格式错误: " + host);
return false;
}
// 端口范围
if (port < 1 || port > 65535) {
System.out.println("端口范围错误: " + port);
return false;
}
// 邮箱格式
if (!ValidatorUtils.isEmail(adminEmail)) {
System.out.println("邮箱格式错误: " + adminEmail);
return false;
}
return true;
}
}
public static void main(String[] args) {
ServerConfig config = new ServerConfig();
config.host = "192.168.1.1";
config.port = 8080;
config.adminEmail = "admin@example.com";
if (config.validate()) {
System.out.println("配置校验通过");
}
}
}正则表达式
工具类使用的正则表达式:
java
手机号: ^1[3-9]\\d{9}$
邮箱: ^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$
数字: \\d+
字母: [a-zA-Z]+
字母数字下划线: \\w+注意事项
⚠️ 正则性能
java
// 频繁校验时可预编译正则
Pattern phonePattern = Pattern.compile("^1[3-9]\\d{9}$");
boolean valid = phonePattern.matcher("13812345678").matches();⚠️ 手机号规则
java
// 当前规则支持 13x-19x 开头
// 手机号规则可能变化,注意更新