RegExp.prototype.test()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức test() của các instance RegExp thực hiện tìm kiếm với biểu thức chính quy này để tìm kết quả khớp giữa biểu thức chính quy và một chuỗi được chỉ định. Trả về true nếu có kết quả khớp; false nếu không.
Các đối tượng RegExp trong JavaScript là stateful khi chúng có
cờ global hoặc sticky
được đặt (ví dụ: /foo/g hoặc /foo/y). Chúng lưu trữ
lastIndex từ kết quả khớp trước. Sử dụng điều này
nội bộ, test() có thể được dùng để lặp qua nhiều kết quả khớp trong một chuỗi
văn bản (với các nhóm bắt).
Try it
const str = "table football";
const regex = /fo+/;
const globalRegex = /fo+/g;
console.log(regex.test(str));
// Expected output: true
console.log(globalRegex.lastIndex);
// Expected output: 0
console.log(globalRegex.test(str));
// Expected output: true
console.log(globalRegex.lastIndex);
// Expected output: 9
console.log(globalRegex.test(str));
// Expected output: false
Cú pháp
test(str)
Tham số
str-
Chuỗi để khớp với biểu thức chính quy. Tất cả các giá trị được ép thành chuỗi, vì vậy bỏ qua nó hoặc truyền
undefinedsẽ khiếntest()tìm kiếm chuỗi"undefined", đây hiếm khi là điều bạn muốn.
Giá trị trả về
true nếu có kết quả khớp giữa biểu thức chính quy và chuỗi str. Ngược lại, false.
Mô tả
Sử dụng test() bất cứ khi nào bạn muốn biết liệu một mẫu có được tìm thấy trong một chuỗi hay không. test() trả về một boolean, không giống như phương thức String.prototype.search() (trả về chỉ mục của kết quả khớp, hoặc -1 nếu không tìm thấy).
Để lấy thêm thông tin (nhưng thực thi chậm hơn), hãy sử dụng phương thức exec(). (Tương tự như phương thức String.prototype.match().)
Như với exec() (hoặc kết hợp với nó), test() được gọi nhiều lần trên cùng một instance biểu thức chính quy global sẽ tiến qua kết quả khớp trước đó.
Ví dụ
>Sử dụng test()
Ví dụ này kiểm tra liệu "hello" có xuất hiện ở đầu chuỗi hay không, trả về kết quả boolean.
const str = "hello world!";
const result = /^hello/.test(str);
console.log(result); // true
Ví dụ sau ghi thông báo phụ thuộc vào sự thành công của kiểm tra:
function testInput(re, str) {
const midString = re.test(str) ? "contains" : "does not contain";
console.log(`${str} ${midString} ${re.source}`);
}
Sử dụng test() trên regex có cờ "global"
Khi regex có cờ global được đặt,
test() sẽ tăng lastIndex của regex.
(RegExp.prototype.exec() cũng tăng thuộc tính lastIndex.)
Các lần gọi tiếp theo đến test(str) sẽ tiếp tục tìm kiếm str bắt đầu từ lastIndex. Thuộc tính lastIndex sẽ tiếp tục tăng mỗi lần test() trả về true.
Note:
Miễn là test() trả về true, lastIndex sẽ không đặt lại — ngay cả khi kiểm tra một chuỗi khác!
Khi test() trả về false, lastIndex của regex được gọi sẽ đặt lại về 0.
Ví dụ sau minh họa hành vi này:
const regex = /foo/g; // the "global" flag is set
// regex.lastIndex is at 0
regex.test("foo"); // true
// regex.lastIndex is now at 3
regex.test("foo"); // false
// regex.lastIndex is at 0
regex.test("barfoo"); // true
// regex.lastIndex is at 6
regex.test("foobar"); // false
// regex.lastIndex is at 0
regex.test("foobarfoo"); // true
// regex.lastIndex is at 3
regex.test("foobarfoo"); // true
// regex.lastIndex is at 9
regex.test("foobarfoo"); // false
// regex.lastIndex is at 0
// (...and so on)
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-regexp.prototype.test> |
Tương thích trình duyệt
Xem thêm
- Hướng dẫn Biểu thức chính quy
RegExp