Regex
^.*[a-zA-Z0-9]+.*$
Giải thích
^.* - đầu chuỗi, 0 hoặc nhiều ký tự bất kỳ
[a-zA-Z0-9]+ - ít nhất 1 ký tự alphanumeric
.*$ - cuối chuỗi, 0 hoặc nhiều ký tự
Ví dụ 1: Pattern/Matcher
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập chuỗi: ");
String input = sc.nextLine();
String regex = "^.*[a-zA-Z0-9]+.*$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
System.out.println("Chuỗi hợp lệ (có alphanumeric)");
} else {
System.out.println("Chuỗi không hợp lệ (không có alphanumeric)");
}
}
}
Kết quả
Nhập chuỗi: ###test123$$$
Chuỗi hợp lệ (có alphanumeric)
Nhập chuỗi: ####$$$$
Chuỗi không hợp lệ (không có alphanumeric)
Ví dụ 2: String.matches()
String regex = "^.*[a-zA-Z0-9]+.*$";
System.out.println("###test123$$$".matches(regex)); // true
System.out.println("####$$$$".matches(regex)); // false
Cách đơn giản hơn
// Chỉ cần tìm 1 alphanumeric bất kỳ đâu
boolean hasAlnum = input.matches(".*[a-zA-Z0-9].*");
// Hoặc dùng Pattern compile một lần
Pattern ALNUM = Pattern.compile("[a-zA-Z0-9]");
boolean has = ALNUM.matcher(input).find();
Lưu ý
matches() yêu cầu toàn bộ chuỗi khớp → cần ^.* ... .*$.
find() chỉ cần substring khớp → regex gọn hơn [a-zA-Z0-9].
- Unicode: dùng
\\p{Alnum} hoặc \\p{IsAlphabetic}\\p{IsDigit}.