Lớp ký tự POSIX \p{Alnum} khớp với các ký tự chữ và số (alphanumeric): A-Z, a-z, 0-9. Tương đương [A-Za-z0-9].
Ví dụ 1: Đếm ký tự alphanumeric
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AlphanumericExample {
public static void main(String args[]) {
System.out.println("Nhập một chuỗi:");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String regex = "[\\p{Alnum}]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Số ký tự alphanumeric: " + count);
}
}
Kết quả mẫu 1
Nhập một chuỗi: sample 123 Số ký tự alphanumeric: 9
"sample" (6) + "123" (3) = 9. Khoảng trắng không tính.
Kết quả mẫu 2
Nhập một chuỗi: @$#%&&#* Số ký tự alphanumeric: 0
Ví dụ 2: Lọc chuỗi chỉ chứa alphanumeric
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
String regex = "^\\p{Alnum}+$";
Scanner sc = new Scanner(System.in);
System.out.println("Nhập 5 chuỗi:");
String[] input = new String[5];
for (int i = 0; i < 5; i++) {
input[i] = sc.nextLine();
}
Pattern p = Pattern.compile(regex);
System.out.println("Chuỗi chỉ chứa alphanumeric:");
for (int i = 0; i < 5; i++) {
Matcher m = p.matcher(input[i]);
if (m.matches()) {
System.out.println(m.group());
}
}
}
}
Kết quả mẫu
Nhập 5 chuỗi: hello 1234 243test ##$$@ *** Chuỗi chỉ chứa alphanumeric: hello 1234 243test
Lưu ý
\p{Alnum}=\p{Alpha}+\p{Digit}.- Chỉ bao gồm ASCII alphanumeric. Không bao gồm chữ cái có dấu (tiếng Việt, tiếng Pháp...) hay chữ non-Latin.
- Trong Java string:
"\\p{Alnum}".
Ứng dụng thực tế
- Validate username:
^\p{Alnum}{3,20}$(3-20 ký tự chữ/số). - Validate mã sản phẩm/serial:
^\p{Alnum}{8,12}$. - Loại bỏ ký tự đặc biệt:
input.replaceAll("[^\\p{Alnum}]", ""). - Kiểm tra mật khẩu chứa ít nhất 1 chữ và 1 số: dùng lookahead thay vì chỉ \p{Alnum}.
So sánh nhanh
| Class | Khớp | Ví dụ khớp | Ví dụ KHÔNG khớp |
|---|---|---|---|
\p{Alnum} | Chữ + Số | a, Z, 5 | @, space, à |
\p{Alpha} | Chữ cái | a, Z | 5, @, à |
\p{Digit} | Số 0-9 | 5 | a, @ |
\p{XDigit} | Hex (0-9, A-F, a-f) | 5, A, f | G, z, @ |