Phương thức exec() của JavaScript RegExp

Định nghĩa và cách sử dụng

exec() phương pháp này kiểm tra khớp trong chuỗi.

phương pháp này là khớp mẫu chung.

Nếu tìm thấy khớp, sẽ trả về mảng kết quả, nếu không trả về null

ví dụ

ví dụ 1

Tìm kiếm ký tự "e" trong chuỗi:

let text = "The best things in life are free";
let result = /e/.exec(text);

thử ngay

ví dụ 2

Tìm kiếm toàn cục "Hello" và "W3School" trong chuỗi:

let text = "Hello world!";
// Tìm kiếm "Hello"
let result1 = /Hello/.exec(text);
// Tìm kiếm "W3School"
let result2 = /W3School/.exec(text);

thử ngay

cú pháp

regexp.exec(thuộc tính lastIndex chỉ định ký tự bắt đầu tìm kiếm chuỗi. Điều này có nghĩa là bạn có thể gọi lại)

tham số

tham số mô tả
thuộc tính lastIndex chỉ định ký tự bắt đầu tìm kiếm chuỗi. Điều này có nghĩa là bạn có thể gọi lại bắt buộc. Chuỗi cần tìm kiếm.

giá trị trả về

Loại mô tả
mảng Nếu tìm thấy khớp, sẽ chứa mảng văn bản khớp, nếu không trả về null.

chi tiết kỹ thuật

giá trị trả về

mảng, chứa kết quả khớp. Nếu không tìm thấy khớp, giá trị là nullDưới đây là mô tả định dạng của mảng trả về.

ném

Loại mô tả
TypeError Khi đối tượng gọi phương pháp không phải là RegExp, sẽ ném ngoại lệ này.

giải thích

trong tất cả các phương thức khớp mẫu RegExp và phương thức khớp mẫu Stringexec() của chức năng mạnh nhất. Nó là một phương pháp chung, dễ sử dụng hơn RegExp.test()String.replace()String.match() đều phức tạp.

exec() sẽ tìm kiếm chuỗi thuộc tính lastIndex chỉ định ký tự bắt đầu tìm kiếm chuỗi. Điều này có nghĩa là bạn có thể gọi lạithì từ đó lấy được với biểu thức chính quy regexp văn bản khớp. Nếu exec() đã tìm thấy văn bản khớp, nó sẽ trả về một mảng kết quả. Không có kết quả khớp, trả về null。Đầu tiên trong mảng trả về là văn bản khớp với biểu thức. Thứ hai là với regexp thứ hai biểu thức con khớp với văn bản (nếu có). Element thứ 2 là regexp thứ hai biểu thức con khớp với văn bản, tương tự như vậy. Thường thì thuộc tính length của mảng biểu thị số lượng phần tử trong mảng. Ngoài phần tử và thuộc tính length,exec() còn trả về hai thuộc tính. Thuộc tính index biểu thị vị trí của ký tự đầu tiên của văn bản khớp. Thuộc tính input chỉ là thuộc tính lastIndex chỉ định ký tự bắt đầu tìm kiếm chuỗi. Điều này có nghĩa là bạn có thể gọi lại. Khi gọi phương pháp của đối tượng RegExp không toàn cục exec() phương pháp trả về mảng tương tự phương pháp String.match() trả về phương pháp tương tự.

gọi phương pháp của biểu thức chính quy không toàn cục exec() phương pháp sẽ thực hiện tìm kiếm và trả về kết quả trên. Tuy nhiên, khi regexp khi là biểu thức chính quy toàn cụcexec() hành vi của nó sẽ phức tạp hơn một chút. Nó sẽ regexp . Khi nó tìm thấy văn bản khớp với biểu thức, sau khi khớp, nó sẽ đặt thuộc tính lastIndex chỉ định ký tự bắt đầu tìm kiếm chuỗi. Điều này có nghĩa là bạn có thể gọi lại string regexp thuộc tính lastIndex của exec() phương pháp để duyệt qua tất cả các văn bản khớp trong chuỗi. Khi phương pháp exec() không thể tìm thấy văn bản khớp nào nữa, nó sẽ trả về nullvà đặt thuộc tính lastIndex lại là 0. Nếu sau khi hoàn thành một khớp mẫu trong một chuỗi khác, bạn muốn bắt đầu tìm kiếm chuỗi mới, bạn phải đặt thủ công thuộc tính lastIndex lại là 0.

Lưu ý, bất kể regexp nếu là chế độ toàn cụcexec() sẽ thêm chi tiết đầy đủ vào mảng trả về. Điều này là exec()String.match() của phương pháp String.match(), sau đó phương pháp này sẽ thêm chi tiết đầy đủ vào mảng trả về. Điều này là exec() phương pháp là phương pháp duy nhất để nhận được thông tin toàn cục của toàn bộ khớp mẫu.

hỗ trợ trình duyệt

exec() là tính năng ECMAScript1 (ES1).

Tất cả các trình duyệt đều hỗ trợ hoàn toàn ES1 (JavaScript 1997):

Chrome IE Edge Firefox Safari Opera
hỗ trợ hỗ trợ hỗ trợ hỗ trợ hỗ trợ hỗ trợ

phương pháp tìm kiếm biểu thức chính quy

Trong JavaScript, việc tìm kiếm văn bản biểu thức chính quy có thể được hoàn thành bằng nhiều phương pháp khác nhau.

sử dụngmẫu (pattern)Như một biểu thức chính quy, những phương pháp này là phổ biến nhất:

ví dụ mô tả
text.match(mẫu) phương thức chuỗi match()
text.search(mẫu) phương thức chuỗi search()
mẫu.exec(text) phương thức RexExp exec()
mẫu.test(text) phương thức RexExp test()