Đối tượng RegExp có hai phương thức có thể được dùng để kiểm tra sự tương thích giữa chuỗi dữ liệu với chuỗi mẫu là phương thức test() và phương thức exec(), hai phương thức này đều khá tương tự nhau. Phương thức test() tìm kiếm một biểu thức chính quy trong chuỗi và trả về true nếu tương thích và false nếu không tương thích. Phương thức exec() cũng tìm kiếm biểu thức chính quy trong một chuỗi, nhưng nếu tìm thấy thì trả về biểu thức chính quy, không thấy sẽ trả về null. Giá trị trả về của exec() khá giống với phương thức match() của đối tượng String. Bảng dưới đây tổng hợp những phương thức của đối tượng RegExp.
Phương thức
Nhiệm vụ
exec()
Tìm kiếm sự tương thích trong chuỗi và trả về biểu thức chính quy hoặc null
test()
Kiểm tra sự tương thích trong chuỗi và trả về true hoặc false
Tóm Tắt
Phương thức test()
Phương thức test() dùng để kiểm tra xem chuỗi dữ liệu có tương thích với biểu thức chính quy (chuỗi mẫu) hay không, nếu chứa thì test() trả về true, ngược lại trả về false. Sau khi tìm kiếm thì thuộc tính lastIndex của đối tượng RegExp sẽ chứa vị trí theo chỉ số trong chuỗi dữ liệu. Nếu bổ từ g được sử dụng thì lastIndex sẽ chứa vị trí của chuỗi mẫu cuối cùng tương thích.
Các bước kiểm tra sự tương thích:
- Gán biểu thức chính quy cho một biến.
- Sử dụng phương thức test() để kiểm tra xem chuỗi dữ liệu có tương thích chuỗi mẫu hay không, nếu tương thích thì test() trả về true, ngược lại thì trả về false. (ngoài ra ta cũng có thể sử dụng bốn phương thức chuỗi là match(), search(), replace() và split() được dùng cho biểu thức chính quy).
Cú pháp:
var string=”Chuỗi dữ liệu”;
var regex = /biểu thức chính quy/; //phương pháp thông thường
var regex=new RegExp(“regular expression”); //phương pháp sử dụng hàm tạo
regex.test(string); //trả về true hoặc false
hoặc:
/biểu thức chính quy/.test(“string”);
Ví dụ:
var
myString="H
ọ
c vi
ệ
n Đào t
ạ
o và Công ngh
ệ
V1Study"
;var
regex = /V1/var
regex=new
RegExp("V1"
); regex.test(myString); hoặ
c: /ten/.test("H
ọ
c vi
ệ
n công ngh
ệ
V1Study"
);
Ví dụ thực hiện
<html
> <head
> <title
>Đố
i tượ
ng biể
u thứ
c chính quy theo cách cơ
bả
n</title
> <script
> 1 var myString="My gloves are worn for wear."; 2 var regex = /love/; //Tạ
o mộ
t đố
i tượ
ng biể
u thứ
c chính quy 3 if (regex.test(myString)){ 4 alert("Found pattern!"); } else{ 5 alert("No match."); } </script
> </head
> <body
></body
> </html
>
GIẢI THÍCH
- Chuỗi “My gloves are worn for wear.” được gán cho một biến tên myString.
- Biểu thức chính quy /love/ được gán cho biến regex. Đây là cách thức cố định của việc tạo đối tượng biểu thức chính quy.
- Phương thức test() của đối tượng biểu thức chính quy sẽ kiểm tra xem myString có chứa mẫu hay không (love). Nếu love được tìm thấy sẽ trả về true.
- Hộp thoại alert sẽ hiển thị “Found pattern!” nếu test() trả về true.
- Nếu mẫu /love/ không được tìm thấy thì trả về hộp thoại với thông báo “No match.”
Ví dụ thực hiện 2
<html> <head> <title>Đố
i tượ
ng biể
u thứ
c chính quy vớ
i hàm tạ
o</title> <script>1
var
myString="My gloves are worn for wear."
;2
var
regex =new
RegExp("love"
); //tạo một đối tượng biểu thức chính quy3
if
( regex.test(myString)){4
alert("Found pattern love!"
); }else
{5
alert("No match."
); } </script> </head> <body></body> </html>
Phương thức exec()
Phương thức exec() cũng có cách thức hoạt động giống như phương thức test(), chỉ khác ở một điểm là exec() trả về chuỗi mẫu nếu tìm thấy sự tương thích, ngược lại thì trả về null.
Cú pháp:
array = regular_expression.exec(string);
Ví dụ:
list = /ring/.exec("Don't string me along, just bring me the goods."
);
Ví dụ thực hiện
<html> <head> <title>Phươ
ng thứ
c exec()</title> <script>1
var
myString="My lovely gloves are worn for wear, Love."
;2
var
regex = /love/i; //Tạo mẫu tìm kiếm3
var
array=regex.exec(myString);4
if
(regex.exec(myString)){ alert("Matched! "
+ array); }else
{5
alert("No match."
); } </script> <body></body> </html>
GIẢI THÍCH
- Gán chuỗi “My gloves are worn for wear.” cho biến myString.
- Mẫu /love/ được gán cho biến regex.
- Phương thức exec() trả về mẫu hoặc null.
- Nếu exec() trả về mẫu thì hộp thoại “Matched” được thực thi.
- Nếu không thì hộp thoại “No match.” sẽ được thực thi.