Regular Expression
kiểm tra dữ liệu người dùng nhập vào có đúng như định dạng mong muốn hay không.
Username Regular Expression Pattern
^[a-z0-9_-]{3,15}$
Giải thích:
- ^ : kí hiệu cho biết bắt đầu một dòng
- [ ] : tập hợp các kí tự trong nó
- a-z: tập hợp a-z
- 0-9: tập hợp số từ 0 đến 9
- _ - : kí tự “_” và “-”
- { } : biểu diễn độ dài
- $ : kết thúc một dòng
Password Regular Expression Pattern
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
(?= .*\d)
:- ( ) : nhóm
- \d : 1 kí tự số (digit)
?=
có thể hiểu (?=) như 1 câu if để kiểm tra string có chứa những đoạn mà kí tự đứng trong ở sau hay không? nếu có thì sẽ tiếp tục match với những điều kiện tiếp theo.
VD:
(?=.u)z
. là một ký tự bất kỳ,
⇒ .u sẽ tìm trong chuỗi những đoạn có u đứng đằng sau gồm "zu", "ku", "zu”
Sau đó, từ những đoạn hợp lệ này, sẽ match để tìm ra có kí tự "z" hay không?
. là một ký tự bất kỳ,
* là lặp 0 hoặc nhiều lần.
* và + khác nhau như thế nào?
* là lặp 0 hoặc nhiều lần, + lặp 1 hoặc nhiều lần, ? lặp 0 hoặc 1 lần ký tự trước nó
VD:
/^ a* $/
sẽ khớp với chuỗi chứa 0, 1 hay nhiều chữ a, như: chuỗi rỗng, a, aa, aaaa,…⇒ mật khẩu có ít nhất 1 kí tự số
(?= .*[a-z])
⇒ mật khẩu có ít nhất 1 chữ cái viết thường
(?= .*[A-Z])
⇒ mật khẩu có ít nhất 1 chữ cái viết hoa
(?= .*[@#$%])
⇒ mật khẩu có ít nhất 1 ký tự đặc biệt
.{6,20})
⇒ mật khẩu có độ dài từ 6 đến 20
Email Regular Expression Pattern
/^ ([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}) $/
[a-zA-Z0-9._%-]+
một chuỗi ký tự chữ cái (viết thường hoặc viết hoa), chữ số, hoặc các ký tự đặc biệt như
._%-
. Dấu +
sau ngoặc vuông đảm bảo rằng ký tự trong tập hợp này và có thể xuất hiện một hoặc nhiều lần.@
Ký tự "@".
[a-zA-Z0-9.-]+
Một chuỗi ký tự chữ cái (viết thường hoặc viết hoa) hoặc chữ số, có thể là dấu chấm
.
hoặc dấu gạch ngang -
.\.
Dấu chấm
.
. Được đặt trong hai dấu gạch chéo \
để tránh sự hiểu lầm, vì dấu chấm thường có ý nghĩa đặc biệt trong biểu thức chính quy.[a-zA-Z]{2,}
Hai hoặc nhiều chữ cái (viết thường hoặc viết hoa) đại diện cho tên miền.
{2,}
yêu cầu ít nhất hai chữ cái.Match a date in ‘mm/dd/yyyy’ format with any of the ‘-’, ‘/’, ‘.’ as separators.
(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d
0[1-9]|1[012]
Nhóm này đại diện cho tháng và chấp nhận các giá trị từ 01 đến 12.
Phần
0[1-9]
đảm bảo rằng nếu tháng chỉ có một chữ số, nó phải ở dạng "01", "02", ..., "09". Phần
1[012]
là cho các tháng từ 10 đến 12.[- /.]
Chấp nhận một ký tự phân tách giữa tháng và ngày. Có thể là dấu gạch ngang
-
, dấu chấm .
hoặc dấu /
.0[1-9]|[12][0-9]|3[01]
Nhóm này đại diện cho ngày và chấp nhận các giá trị từ 01 đến 31.
Phần
0[1-9]
giữ cho ngày một chữ số được bắt đầu bằng "0". Phần
[12][0-9]
chấp nhận các số từ 10 đến 29. Phần
3[01]
là cho các số từ 30 đến 31.[- /.]
(19|20)\d\d
Nhóm này đại diện cho năm và chấp nhận các giá trị từ 1900 đến 2099.
Phần
(19|20)
giữ cho năm bắt đầu bằng "19" hoặc "20", và
\d\d
chấp nhận hai chữ số tiếp theo để đặc tả phần cuối của năm.URL Regular Expression Pattern
^(https?|ftp|file)://.+$
https?
Phần này đại diện cho "http" hoặc "https".
Dấu hỏi
?
sau "s" làm cho "s" trở nên tùy chọn, có nghĩa là "https" có thể xuất hiện hoặc không.ftp
Đại diện cho giao thức "ftp".
file
Đại diện cho giao thức "file”.
://
Là phần cố định của một địa chỉ URL, ngăn cách giữa giao thức và phần còn lại của URL.
.+
Một dấu chấm
.
đại diện cho bất kỳ ký tự nào, và dấu +
báo hiệu rằng phải có ít nhất một ký tự sau phần còn lại của URL.Trong Java validate những định dạng này như thế nào?
Trong class Validate ta khởi tạo 1 chuỗi mẫu (biểu thức chính quy): ” REGEX_EMAIL ” để định dạng cho email và 1 method validateEmail cho phép truyền vào 1 chuỗi và kiểm tra chuỗi đó có đúng định dạng email không.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Validate { Pattern pattern; Matcher matcher; public static final String REGEX_EMAIL = "[A-Za-z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)"; public boolean validateEmail(String string){ pattern = Pattern.compile(REGEX_EMAIL); matcher = pattern.matcher(string); return matcher.matches(); } }
pattern = Pattern.compile(REGEX_EMAIL): Sử dụng để xác định 1 khuôn mẫu cho các biểu thức chính quy. Nó sử dụng method static compile() để tạo object.
matcher = pattern.matcher(string): Thực hiện so khớp trên 1 chuỗi ký tự. Sử dụng method matcher() để tạo,
matcher.matches(): Sẽ so sánh chuỗi truyền vào với biểu thức chính quy. Nếu đúng định dạng của biểu thức chính quy thì sẽ trả về true và ngược lại nếu không đúng định dạng sẽ trả về false.