在 Java EE 專案中,常需驗證使用者輸入的電子郵件格式是否合法。雖然可自行撰寫正則,但建議採用成熟庫或標準 API,避免邊界情況疏漏。
// 實體類別
import jakarta.validation.constraints.Email;
public class UserForm {
@Email(message = "電子郵件格式不正確")
private String email;
// getter/setter
}
搭配 Spring MVC / Jakarta EE 容器,自動在 Controller 層驗證:
@PostMapping("/register")
public String register(@Valid UserForm form, BindingResult result) {
if (result.hasErrors()) return "registerForm";
// 合法邏輯
}
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.7</version>
</dependency>
import org.apache.commons.validator.routines.EmailValidator;
public boolean isValidEmail(String email) {
return EmailValidator.getInstance().isValid(email);
}
// RFC 5322 簡化版,涵蓋多數常見格式
private static final Pattern EMAIL_PATTERN = Pattern.compile(
"^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"
);
public boolean isValidEmail(String email) {
return email != null && EMAIL_PATTERN.matcher(email).matches();
}
注意:完整 RFC 5322 正則極其冗長,生產環境不建議手寫。
EmailValidator 等類別查看原始碼。企業級專案首選 Bean Validation @Email,零配置、標準化、易維護;輕量專案可引入 Commons Validator;切勿自行造輪子撰寫複雜正則。