Biểu thức chính quy (Regular expression) là gì? Regular expression trong java được sử dụng như thế nào?

1. Định nghĩa

Biểu thức chính quy (regular expression hay còn gọi là regex) là 1 chuỗi mẫu được sử dụng để quy định dạng thức của 1 chuỗi, nếu 1 chuỗi nào đó phù hợp với mẫu dạng thức thì chuỗi đó được gọi là so khớp.

VD: Ta có dạng thức của chuỗi là : [0-9]{6,12} . Nếu chuỗi bạn nhập vào là các số và độ dài từ 6 đến 12 số thì được cho là khớp, còn ngược lại thì được cho là không khớp.

2. Regular expression trong Java

VD: 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.

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.

3. Quy tắc viết biểu thức chính quy 

Ký tự: 

^ : Bắt đầu 1 biểu thức chính quy

$ : Kết thúc 1 biểu thức chính quy

+ : Lặp lại 1 hoặc nhiều lần

* : Lặp lại 0 hoặc nhiều lần

? : Lặp lại 0 hoặc 1 lần

: Khoảng liên tiếp

. : 1 ký tự bất kỳ

{n} : Lặp lại n lần

{ n , m } : Lặp lại ít nhất là n lần và nhiều nhất là m lần

{n , } : Lặp lại ít nhất n lần

{ , m} : Lặp lại nhiều nhất m lần

[ ] : Hoặc

( ) : Và

\ : ký tự đặc biệt phía sau nó

\d : Giống với [ 0 – 9 ] : cho phép nhập 1 số

\D : Giống với [ ^ 0 -9] : không cho phép nhập số

\w : Giống [ 0-9a-zA-Z ] : Cho phép nhập số , chữ hoa, chữ thường

\W : Giống [ ^0-9a-zA-Z ] : Không cho phép nhập số , chữ hoa, chữ thường

\s : Cho nhập khoảng trắng

Author: Đào Văn Phi

Đăng ký nhận bộ tài liệu kỹ năng dành cho lập trình viên (video hướng dẫn + slide) tại đây

Tìm hiểu thêm về mô hình Coding Bootcamp tại đây


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.