JavaScript: test() & exec()

Đố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

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:

  1. Gán biểu thức chính quy cho một biến.
  2. 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

  1. Chuỗi “My gloves are worn for wear.” được gán cho một biến tên myString.
  2. 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.
  3. 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.
  4. Hộp thoại alert sẽ hiển thị “Found pattern!” nếu test() trả về true.
  5. 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 quy

3

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ếm

3

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

  1. Gán chuỗi “My gloves are worn for wear.” cho biến myString.
  2. Mẫu /love/ được gán cho biến regex.
  3. Phương thức exec() trả về mẫu hoặc null.
  4. Nếu exec() trả về mẫu thì hộp thoại “Matched” được thực thi.
  5. Nếu không thì hộp thoại “No match.” sẽ được thực thi.