Công thức excel trong javascript

Biểu thức chính quy là các mẫu được sử dụng để so khớp các tổ hợp ký tự trong chuỗi. Trong JavaScript, biểu thức chính quy cũng là đối tượng. Các mẫu này được sử dụng với các phương pháp

const re = new RegExp('ab+c');
8 và
const re = new RegExp('ab+c');
9 của
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
0 và với các phương pháp
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
1,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
2,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
3,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
4,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
5 và
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
6 của
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
7. Chương này mô tả các biểu thức chính quy JavaScript

Tạo biểu thức chính quy

Bạn xây dựng một biểu thức chính quy theo một trong hai cách

  • Sử dụng một biểu thức chính quy, bao gồm một mẫu được đặt giữa các dấu gạch chéo, như sau

    const re = new RegExp('ab+c');
    
    0

    Các ký tự biểu thức chính quy cung cấp khả năng biên dịch biểu thức chính quy khi tập lệnh được tải. Nếu biểu thức chính quy không đổi, việc sử dụng biểu thức này có thể cải thiện hiệu suất
  • Hoặc gọi hàm khởi tạo của đối tượng
    function escapeRegExp(string) {
      return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
    }
    
    0 như sau

    const re = new RegExp('ab+c');
    

    Việc sử dụng hàm tạo cung cấp khả năng biên dịch thời gian chạy của biểu thức chính quy. Sử dụng hàm tạo khi bạn biết mẫu biểu thức chính quy sẽ thay đổi hoặc bạn không biết mẫu và đang lấy nó từ một nguồn khác, chẳng hạn như đầu vào của người dùng

Viết một mẫu biểu thức chính quy

Mẫu biểu thức chính quy bao gồm các ký tự đơn giản, chẳng hạn như

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
9 hoặc kết hợp các ký tự đơn giản và ký tự đặc biệt, chẳng hạn như
const re = new RegExp('ab+c');
40 hoặc
const re = new RegExp('ab+c');
41. Ví dụ cuối cùng bao gồm dấu ngoặc đơn, được sử dụng làm thiết bị bộ nhớ. Kết quả khớp với phần này của mẫu được ghi nhớ để sử dụng sau này, như được mô tả trong Sử dụng nhóm

Ghi chú. Nếu bạn đã quen thuộc với các dạng của biểu thức chính quy, bạn cũng có thể đọc cheat sheet để tra cứu nhanh một mẫu/cấu trúc cụ thể

Sử dụng các mẫu đơn giản

Các mẫu đơn giản được tạo từ các ký tự mà bạn muốn tìm đối sánh trực tiếp. Ví dụ: mẫu

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
9 khớp với các tổ hợp ký tự trong chuỗi chỉ khi chuỗi chính xác
const re = new RegExp('ab+c');
43 xảy ra (tất cả các ký tự cùng nhau và theo thứ tự đó). Một trận đấu như vậy sẽ thành công trong chuỗi
const re = new RegExp('ab+c');
44 và
const re = new RegExp('ab+c');
45. Trong cả hai trường hợp, kết quả khớp với chuỗi con
const re = new RegExp('ab+c');
43. Không có sự trùng khớp nào trong chuỗi
const re = new RegExp('ab+c');
47 bởi vì trong khi nó chứa chuỗi con
const re = new RegExp('ab+c');
48, nó không chứa chính xác chuỗi con
const re = new RegExp('ab+c');
43

Sử dụng ký tự đặc biệt

Khi tìm kiếm khớp yêu cầu nhiều thứ hơn là khớp trực tiếp, chẳng hạn như tìm một hoặc nhiều chữ b hoặc tìm khoảng trắng, bạn có thể bao gồm các ký tự đặc biệt trong mẫu. Ví dụ: để khớp một

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40 duy nhất theo sau là 0 hoặc nhiều hơn
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41 theo sau là
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
42, bạn sẽ sử dụng mẫu
const re = new RegExp('ab+c');
40.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44 sau
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41 có nghĩa là "0 hoặc nhiều lần xuất hiện của mục trước đó. " Trong chuỗi
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46, mẫu này sẽ khớp với chuỗi con
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47

Các trang sau đây cung cấp danh sách các ký tự đặc biệt khác nhau phù hợp với từng danh mục, cùng với các mô tả và ví dụ

khẳng định

Các xác nhận bao gồm các ranh giới, cho biết phần đầu và phần cuối của dòng và từ cũng như các mẫu khác cho biết theo một cách nào đó rằng có thể khớp (bao gồm biểu thức nhìn về phía trước, nhìn về phía sau và biểu thức điều kiện)

lớp nhân vật

Phân biệt các loại ký tự. Ví dụ, phân biệt giữa các chữ cái và chữ số

Nhóm và phản hồi

Các nhóm nhóm nhiều mẫu thành một tổng thể và việc chụp các nhóm cung cấp thêm thông tin khớp phụ khi sử dụng mẫu biểu thức chính quy để khớp với một chuỗi. Backreferences đề cập đến một nhóm được chụp trước đó trong cùng một biểu thức chính quy

định lượng

Cho biết số lượng ký tự hoặc biểu thức để khớp

Thuộc tính Unicode thoát

Phân biệt dựa trên các thuộc tính ký tự unicode, ví dụ: chữ hoa và chữ thường, ký hiệu toán học và dấu chấm câu

Nếu bạn muốn xem tất cả các ký tự đặc biệt có thể được sử dụng trong biểu thức chính quy trong một bảng, hãy xem phần sau

Ký tự đặc biệt trong biểu thức chính quy. Ký tự / cấu trúcBài viết tương ứng_______248,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
49,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
42,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
43,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
45,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
48,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
49,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
42,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
43,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
45,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
48

lớp nhân vật

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
49,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
42,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
43,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
45,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46

khẳng định

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
48,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
49,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41

Nhóm và phản hồi

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
42,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
43,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
45,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47

định lượng

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
48,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
49 Thoát tài sản Unicode

Ghi chú. Một bảng cheat lớn hơn cũng có sẵn (chỉ tổng hợp các phần của các bài viết riêng lẻ đó)

bỏ trốn

Nếu bạn cần sử dụng bất kỳ ký tự đặc biệt nào theo nghĩa đen (ví dụ: thực sự đang tìm kiếm

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40), bạn phải thoát ký tự đó bằng cách đặt dấu gạch chéo ngược trước ký tự đó. Ví dụ: để tìm kiếm
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40 theo sau là
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40 theo sau là
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
41, bạn sẽ sử dụng
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44 — dấu gạch chéo ngược "thoát"
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
40, làm cho nó theo nghĩa đen thay vì đặc biệt

Tương tự, nếu bạn đang viết một biểu thức chính quy bằng chữ và cần khớp với dấu gạch chéo ("/"), bạn cần thoát dấu đó (nếu không, nó sẽ kết thúc mẫu). Ví dụ: để tìm kiếm chuỗi "/example/" được theo sau bởi một hoặc nhiều ký tự chữ cái, bạn sẽ sử dụng

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
46—dấu gạch chéo ngược trước mỗi dấu gạch chéo biến chúng thành chữ

Để khớp với dấu gạch chéo ngược theo nghĩa đen, bạn cần thoát khỏi dấu gạch chéo ngược. Chẳng hạn, để khớp với chuỗi "C. \" trong đó "C" có thể là bất kỳ chữ cái nào, bạn sẽ sử dụng

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
47 — dấu gạch chéo ngược đầu tiên thoát khỏi dấu gạch chéo ngược sau nó, do đó, biểu thức sẽ tìm kiếm một dấu gạch chéo ngược theo nghĩa đen

Nếu sử dụng hàm tạo

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
0 với một chuỗi ký tự, hãy nhớ rằng dấu gạch chéo ngược là một dấu thoát trong chuỗi ký tự, vì vậy, để sử dụng nó trong biểu thức chính quy, bạn cần thoát nó ở mức ký tự chuỗi.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
44 và
const re = new RegExp('ab+c');
00 tạo cùng một biểu thức, tìm kiếm "a" theo sau là chữ "*" theo sau là "b"

Nếu chuỗi thoát chưa có trong mẫu của bạn, bạn có thể thêm chúng bằng cách sử dụng

const re = new RegExp('ab+c');
01

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

Chữ "g" sau biểu thức chính quy là một tùy chọn hoặc cờ thực hiện tìm kiếm toàn cầu, tìm kiếm trong toàn bộ chuỗi và trả về tất cả các kết quả phù hợp. Nó được giải thích chi tiết dưới đây trong Advanced Searching With Flags

Tại sao điều này không được tích hợp vào JavaScript?

Sử dụng dấu ngoặc đơn

Dấu ngoặc đơn xung quanh bất kỳ phần nào của mẫu biểu thức chính quy làm cho phần đó của chuỗi con phù hợp được ghi nhớ. Sau khi được ghi nhớ, chuỗi con có thể được gọi lại cho mục đích sử dụng khác. Xem Nhóm và phản hồi để biết thêm chi tiết

Sử dụng biểu thức chính quy trong JavaScript

Các biểu thức chính quy được sử dụng với các phương thức

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
0
const re = new RegExp('ab+c');
9 và
const re = new RegExp('ab+c');
8 và với các phương thức
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
7
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
1,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
3,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
5 và
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
6

MethodDescription
const re = new RegExp('ab+c');
8Thực hiện tìm kiếm đối sánh trong một chuỗi. Nó trả về một mảng thông tin hoặc
const re = new RegExp('ab+c');
11 khi không khớp.
const re = new RegExp('ab+c');
9Kiểm tra sự trùng khớp trong một chuỗi. Nó trả về
const re = new RegExp('ab+c');
13 hoặc
const re = new RegExp('ab+c');
14.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
1Trả về một mảng chứa tất cả các kết quả phù hợp, bao gồm cả các nhóm bắt giữ hoặc
const re = new RegExp('ab+c');
11 nếu không tìm thấy kết quả phù hợp.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
2Trả về một iterator chứa tất cả các kết quả phù hợp, bao gồm cả các nhóm bắt giữ.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
5Kiểm tra sự trùng khớp trong một chuỗi. Nó trả về chỉ mục của trận đấu hoặc
const re = new RegExp('ab+c');
19 nếu tìm kiếm không thành công. ________ 23 Thực hiện tìm kiếm một chuỗi khớp trong một chuỗi và thay thế chuỗi con khớp bằng một chuỗi con thay thế.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
4Thực hiện tìm kiếm tất cả các kết quả phù hợp trong một chuỗi và thay thế các chuỗi con phù hợp bằng một chuỗi con thay thế.
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
6Sử dụng một biểu thức chính quy hoặc một chuỗi cố định để ngắt một chuỗi thành một mảng các chuỗi con

Khi 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, hãy sử dụng các phương thức

const re = new RegExp('ab+c');
9 hoặc
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
5; . Nếu bạn sử dụng
const re = new RegExp('ab+c');
8 hoặc
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
1 và nếu khớp thành công, các phương thức này trả về một mảng và cập nhật các thuộc tính của đối tượng biểu thức chính quy được liên kết và cả đối tượng biểu thức chính quy được xác định trước,
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
0. Nếu khớp không thành công, phương thức
const re = new RegExp('ab+c');
8 trả về
const re = new RegExp('ab+c');
11 (bắt buộc phải trả về
const re = new RegExp('ab+c');
14)

Trong ví dụ sau, người dùng phải nhập số điện thoại. Khi người dùng nhấn nút "Kiểm tra", tập lệnh sẽ kiểm tra tính hợp lệ của số. Nếu số hợp lệ (khớp với chuỗi ký tự được chỉ định bởi biểu thức chính quy), tập lệnh sẽ hiển thị thông báo cảm ơn người dùng và xác nhận số. Nếu số không hợp lệ, tập lệnh sẽ thông báo cho người dùng rằng số điện thoại không hợp lệ