2013-07-05 24 views
6

Tôi có tên biến trong bean. Tôi muốn thêm xác nhận @Pattern để chỉ chấp nhận chữ và số.@Pattern cho chuỗi chữ và số - Xác thực Bean

Hiện tại, tôi có cái này.

@NotNull 
@Pattern(regexp = "{A-Za-z0-9}*") 
String name; 

Nhưng lỗi là Invalid regular expression. tôi đã cố gắng [A-Za-z0-9]. Nhưng điều này cũng không hiệu quả. Không có lỗi mặc dù. Nó cho thấy bất kỳ đầu vào hợp lệ nào là không thành công.

Trả lời

19

Bạn thử mô hình này: ^[A-Za-z0-9]*$

hoặc ^[A-Za-z0-9]+$ để tránh kết quả trống.

Nếu bạn muốn kiểm tra xem chuỗi có chứa các ký tự cụ thể hay không, bạn phải thêm neo (^ để bắt đầu chuỗi, $ cho cuối chuỗi) để đảm bảo rằng mẫu của bạn khớp với tất cả chuỗi.

Dấu ngoặc nhọn chỉ để viết số lượng, ví dụ: tôi muốn hai số a:
a{2}
Bạn không thể đặt chữ cái bên trong. Các trường hợp duy nhất mà bạn có thể đáp ứng chữ trong dấu ngoặc nhọn là khi bạn sử dụng các lớp học unicode nhân vật: \p{L}, \p{Greek}, \p{Arabian} ...

3

Bên cạnh đó, bạn có thể sử dụng một lớp nhân vật, có thể được sử dụng trong dấu ngoặc nhọn, cụ thể là Alnum. Ví dụ, đối với một nhân vật tự chữ và số có chiều dài từ 1 đến 32 ký tự bao gồm:

@Pattern(regexp = "^[\\p{Alnum}]{1,32}$") 

thấy https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html