Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Kiểm tra chuỗi có ít nhất một ký tự alphanumeric - Java Regex


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}.