Bài viết được sự cho phép của tác giả Lưu Bình An
Giới thiệu
Regular Expression (hay gọi tắt là regex – đọc là ghi-ríc-cờ-sờ) là một string với format đặc biệt, với nó chúng ta có thể
- Tìm text trong string
- Thay thế substring trong string
- Trích xuất thông tin từ một string
Tất cả các ngôn ngữ đều có hỗ trợ regex. Có thể mỗi ngôn ngữ có đôi chổ khác nhau, tuy nhiên nhìn chung thì nó được áp dụng giống nhau cho hầu hết.
Regex có thể nói là rất khó học, khó viết, khó nhớ, khó sửa. Tuy nhiên có những việc chỉ có thể thực hiện được với regex.
Ví dụ, kiểm tra một string
có kết thúc bằng .com
, .football
hay không
"google.com" → true
"www.vietnam.football" → true
"google.foobar" → false
regex cho yêu cầu đó
/(.com|.football)$/i
Khai báo regex
Phân tách cái regex ở trên
đặt trước các ký tự đặc biệt, dấu
.
là một ký tự đặc biệt|
là câu điều kiện or$
là điều kiện phải xuất hiện ở cuối string- Đoạn nằm giữa
/đoạn-nằm-giữa/
, là chổ chúng ta viết các điều kiện. Đoạn-nằm-giữa có tên tiếng mỹ là pattern - Chữ
i
ở cuối, phía sau/
là một dạng setting,i
là điều kiện chỉ hợp lệ nếu xuất hiện đúng một lần duy nhất. Có nhiều dạng setting khác nữa, phía dưới sẽ đề cập.
Trong javascript, regex là một object, có thể định nghĩa bằng 2 cách
// tạo 1 object mới
const regex1 = new RegExp('football');
// dùng regular expression literal
const regex2 = /football/
Kiểm tra regex
Regex ở trên chúng ta đang tìm string football
, không giới hạn gì cả, chữ football
nằm ở đâu không quan trọng.
Kiểm tra regex bằng RegExp.test(string)
, sẽ trả về giá trị true/false
regex1.test('football');
// => true
regex1.test('blablabla football blablabla');
// => true
regex2.test('footba');
// => false
regex2.test('blab foot ballabla');
// => false
Xem ngay các tin tuyển dụng Javascript mới nhất
Một số điều kiện có sẵn
Đã khó rồi, các bạn còn đề nghị một số kiểu viết tắt cho bắt anh em căng não ra học
d
tương tự như[0-9]
, chỉ là các giá trị sốD
tương tự như[^0-9]
, không chưa các ký tự sốw
tương tự như[A-Za-z0-9]
, bao gồm ký tự chữ và sốW
tương tự như[^A-Za-z0-9]
, không chứa ký tự chữ và sốs
chứa các ký tự khoản trống như: space, tab, newlineS
không chứa ký tự khoản trống