Làm thế nào để bạn tìm kiếm một chuỗi cho một mẫu trong javascript?
Biểu thức chính quy cung cấp khả năng "tìm" và "tìm và thay thế" dữ liệu thông qua các chuỗi văn bản chỉ định các mẫu tìm kiếm. Regex (hoặc regexp) linh hoạt, mạnh mẽ và giúp việc viết các chương trình dễ hiểu và dễ bảo trì hơn nhiều. Mục blog này sẽ bao gồm các mẫu tìm kiếm này và nhiều cách khác nhau để sử dụng regex trong Javascript Show Cụm từ thông dụng có nhiều cách sử dụng trong bất kỳ mã nào hoạt động với chuỗi văn bản (hoặc truyền dữ liệu văn bản). Regex được sử dụng trong nhiều trường hợp sử dụng phức tạp, một số ví dụ
Regex không trực quan và dường như luôn yêu cầu một số điều chỉnh để hoạt động đúng, vì vậy một trình kiểm tra regex trực tuyến là điều cần thiết. Như Jamie Zawinski đã nói trên alt. tôn giáo. emac năm 1997 Khái niệm cơ bản về biểu thức chính quy Javascript cú phápMột biểu thức chính quy có cú pháp 6. Sử dụng chuỗi 7 làm ví dụ, thuật ngữ regex là
Hàm Javascript 1 nhận một biểu thức chính quy để tìm kiếm một kết quả khớp và trả về vị trí của kết quả khớpHàm Javascript 2 nhận một biểu thức chính quy và trả về một chuỗi đã sửa đổi trong đó mẫu được thay thếTìm kiếm()Hàm Javascript 1 lấy biểu thức chính quy và trả về vị trí trong chuỗi nơi tìm thấy kết quả khớp (hoặc -1 nếu không tìm thấy). Ví dụ: ở đây chúng tôi tìm kiếm thông qua 4 cho "Cat" với công cụ sửa đổi 0 (bỏ qua trường hợp trong quá trình tìm kiếm) 2Tương tự như trên, 1 có thể được gọi trực tiếp trên bất kỳ biến chuỗi nào
GHI CHÚ. Javascript 7 là một con thú rất khác so với 8 trong ngữ cảnh này. cái trước là một biểu thức chính quy, cái sau là một chuỗi. Việc nghĩ rằng một người đang tìm kiếm bằng sức mạnh của khớp regex chỉ để khám phá một chuỗi được trích dẫn là một nguồn thường xuyên gây ra cơn thịnh nộ gỡ lỗi. Đọc tiếp để đề cập đến hàm 9, giúp loại lỗi đánh máy này ít phổ biến hơnthay thế()Hàm Javascript 2 lấy biểu thức chính quy và trả về một chuỗi, có thể được sửa đổi theo mẫu nếu tìm kiếm thành công. So sánh kết quả của ba cuộc gọi sauTìm kiếm theo nghĩa đen được trích dẫn cho lần xuất hiện đầu tiên
Tìm kiếm theo biểu thức chính quy, không nhạy cảm, cho lần xuất hiện đầu tiên 0Tìm kiếm theo biểu thức chính quy, không nhạy cảm, trên toàn cầu (tất cả các lần xuất hiện) 1Đánh giá biểu thức chính quy thay đổiHành vi của công cụ khớp biểu thức chính quy được thay đổi và mở rộng thông qua việc sử dụng các công cụ sửa đổi, phạm vi ký tự, ký tự meta loại lớp và bộ định lượng sửa đổiCông cụ sửa đổi thay đổi hành vi so khớp mặc định (trả về kết quả khớp đầu tiên, sử dụng khớp phân biệt chữ hoa chữ thường và chỉ khớp với dòng đầu tiên của biến nhiều dòng) Các dãyPhạm vi, được giới hạn bởi dấu ngoặc vuông 01, khớp với một phạm vi ký tựBiểu thứcMô tả 02Tìm bất kỳ ký tự nào giữa các dấu ngoặc 03Tìm bất kỳ ký tự nào KHÔNG nằm giữa các dấu ngoặc 04Tìm bất kỳ ký tự nào giữa các dấu ngoặc (bất kỳ chữ số nào) 05Tìm bất kỳ ký tự nào KHÔNG nằm giữa các dấu ngoặc (bất kỳ ký tự nào không phải là chữ số)`(xy)`siêu ký tựSiêu ký tự khớp với các loại ký tự cụ thể Meta-charterDescription 06a ký tự đơn, ngoại trừ dòng mới hoặc dấu kết thúc dòng 07a ký tự từ 08a ký tự không phải từ 09a chữ số 10a ký tự không phải chữ số 11a ký tự khoảng trắng 12a ký tự không khoảng trắng 13a khớp ở ranh giới từ, ở đầu bằng 14 hoặc ở cuối bằng 15 16a khớp, nhưng không ở định lượngBộ định lượng thay đổi trình tự khớp số cụ thể Bộ định lượngMô tả 18So khớp ít nhất một 19 10So khớp 0 hoặc nhiều lần xuất hiện của 19 12So khớp 0 hoặc một lần xuất hiện của 19 14So khớp một chuỗi X 19 16So khớp một chuỗi X với Y 19 18So khớp một chuỗi ít nhất X 19 10So khớp 19 ở cuối 19Kết hợp với chuỗi cụ thể bất kỳ theo sau _______ 41 Đối tượng 18 tích hợp trong Javascript cung cấp một cơ chế linh hoạt hơn để sử dụng các biến cho từng phần tử phù hợp. Bạn đã xem nó hoạt động — các dấu gạch chéo về phía trước tự động tạo ra các biểu thức chính quy — vì vậy những điều sau đây là tương đương 1kiểm tra () và thực thi ()Hãy bắt đầu khám phá đối tượng 18 bằng cách chạy đối sánh chuỗi ký tự trên đối tượng chuỗi ký tự 1Để cung cấp cho lập trình viên Javascript tính linh hoạt tính toán nhiều nhất có thể, chúng tôi đặt chuỗi và mẫu vào các biến, sau đó sử dụng các phương thức 30 và 31 để trả về một mảng boolean và một kết quả tương ứng 1Tìm kiếm()Phương thức Javascript 1 trả về vị trí của trận đấu đầu tiên 3tách ra()Phương thức Javascript 33 coi mẫu là một dấu phân cách và trả về một mảng với tất cả các chuỗi được cắt rời bởi mẫu 9trận đấu()Phương thức Javascript 34 trả về một mảng với tất cả các chuỗi khớp 0Điều đó không ấn tượng lắm, nhưng hãy xem xét kết quả tìm kiếm (từ ví dụ đã cho ở trên) - bây giờ một số sức mạnh của 34 trở nên rõ ràng 1thay thế()Phương thức Javascript 2 2Đầu ra cho thấy rằng chúng tôi có thể cần nhiều công việc hơn để có được kết quả khả quan Nhóm Regex Mạnh mẽ như regex, phải đề cập đến việc nhóm, cung cấp bộ nhớ ngắn hạn về các kết quả phù hợp được tìm thấy Trong đoạn mã sau, chúng tôi khớp hai từ 37 được phân tách bằng bất kỳ ký tự khoảng trắng nào 11 (có thể là khoảng trắng, tab, ký tự xuống dòng, dòng mới, tab dọc hoặc ký tự nguồn cấp biểu mẫu)Các kết quả phù hợp, được ghi nhớ bởi dấu ngoặc đơn nhóm, được gọi lại trong đặc tả thay thế bởi các dấu vị trí 39 và 90 và đảo ngược bằng cách thay đổi thứ tự của chúng trong chuỗi 91 3Kết luậnBài đăng trên blog này bao gồm các khái niệm cơ bản về biểu thức chính quy Javascript, bao gồm
Bắt đầu học Để tìm hiểu thêm về Javascript, hãy xem các bài đăng trên blog Javascript khác và đăng ký tham gia các chương trình Javascript Nanodegree của chúng tôi, bao gồm cả Javascript trung cấp Làm cách nào để kiểm tra xem một chuỗi có khớp với mẫu trong JavaScript không?Nếu bạn cần biết liệu một chuỗi có khớp với biểu thức chính quy RegExp hay không, hãy sử dụng RegExp. nguyên mẫu. thử nghiệm() .
Làm cách nào để khớp mẫu biểu thức chính quy trong JavaScript?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 lại = /ab+c/;. Hoặc gọi hàm khởi tạo của đối tượng RegExp như sau. const re = new RegExp('ab+c'); |