Hướng dẫn regex javascript online - regex javascript trực tuyến
I. Giới thiệuBiểu thức chính quy (regular expressions ) là các mẫu dùng để tìm kiếm các bộ kí tự được kết hợp với nhau trong các chuỗi kí tự. Trong JavaScript thì biểu thức chính quy cũng đồng thời là các đối tượng, tức là khi bạn tạo ra một biểu thức chính quy là bạn có một đối tượng tương ứng. Các mẫu này được sử dụng khá nhiều trong JavaScript như phương thức exec và test của RegExp, hay phương thức match, replace, search, và split của String. Ở phạm vi bài viết này, ta cùng tìm hiểu chi tiết hơn về biểu thức chính quy trong JavaScript. Show
II. Tạo một biểu thức chính quyTa có thể tạo biểu thức chính quy theo 2 cách sau:
III. Cách viết một mẫu biểu thức chính quyMột mẫu biểu thức chính quy là một tập các kí tự thường, như /abc/, hay một tập kết hợp cả kí tự thường và kí tự đặc biệt như /ab*c/ hoặc /Chapter (\d+).\d*/ . Trong ví dụ cuối có chứa cả các dấu ngoặc đơn( () )được sử dụng như các thiết bị nhớ, tức là các mẫu trong phần 1 này sau khi được tìm kiếm có thể được nhớ lại để sử dụng cho các lần sau./abc/, hay một tập kết hợp cả kí tự thường và kí tự đặc biệt như /ab*c/ hoặc /Chapter (\d+).\d*/ . Trong ví dụ cuối có chứa cả các dấu ngoặc đơn( () )được sử dụng như các thiết bị nhớ, tức là các mẫu trong phần 1 này sau khi được tìm kiếm có thể được nhớ lại để sử dụng cho các lần sau.1. Sử dụng mẫu đơn giản Các mẫu đơn giản là các mẫu có thể được xây dựng từ các kí tự có thể thể tìm kiếm một cách trực tiếp. Ví dụ: mẫu 2 sẽ tìm các các đoạn 3 theo đúng thứ tự đó trong các chuỗi. Mẫu này sẽ khớp được với "Hi, My name is abc." và "I am from abcdef city.", vì cả 2 chuỗi này đều chứa đoạn 'abc'. Còn với chuỗi 4, nó sẽ không khớp vì chuỗi này không chứa abc theo đúng thứ tự, mà chỉ chứa ab c.2. Sử dụng các kí tự đặc biệt Các mẫu có thể chứa các kí tự đặc biệt cho các mục đích tìm kiếm nâng cao mà tìm kiếm trực tiếp sẽ khó khăn. Thí dụ như tìm một đoạn chứa một hoặc nhiều hơn một kí tự b, hay tìm một hoặc nhiều kí tự dấu cách (while space). Ví dụ: mẫu 2 sẽ tìm các các đoạn 3 theo đúng thứ tự đó trong các chuỗi. Mẫu này sẽ khớp được với "Hi, My name is abc." và "I am from abcdef city.", vì cả 2 chuỗi này đều chứa đoạn 'abc'. Còn với chuỗi 4, nó sẽ không khớp vì chuỗi này không chứa abc theo đúng thứ tự, mà chỉ chứa ab c./ab*c/ có thể tìm các đoạn có chứa: một kí tự ' 5, theo sau là không có hoặc có một hoặc có nhiều kí tự 6, cuối cùng là một kí tự 7 như chuỗi 8 sẽ được khớp với xâu con 9.2. Sử dụng các kí tự đặc biệt Các mẫu có thể chứa các kí tự đặc biệt cho các mục đích tìm kiếm nâng cao mà tìm kiếm trực tiếp sẽ khó khăn. Thí dụ như tìm một đoạn chứa một hoặc nhiều hơn một kí tự b, hay tìm một hoặc nhiều kí tự dấu cách (while space). mẫu /ab*c/ có thể tìm các đoạn có chứa: một kí tự ' 5, theo sau là không có hoặc có một hoặc có nhiều kí tự 6, cuối cùng là một kí tự 7 như chuỗi 8 sẽ được khớp với xâu con 9.Ví dụ: mẫu 2 sẽ tìm các các đoạn 3 theo đúng thứ tự đó trong các chuỗi. Mẫu này sẽ khớp được với "Hi, My name is abc." và "I am from abcdef city.", vì cả 2 chuỗi này đều chứa đoạn 'abc'. Còn với chuỗi 4, nó sẽ không khớp vì chuỗi này không chứa abc theo đúng thứ tự, mà chỉ chứa ab c.2. Sử dụng các kí tự đặc biệt Các mẫu có thể chứa các kí tự đặc biệt cho các mục đích tìm kiếm nâng cao mà tìm kiếm trực tiếp sẽ khó khăn. Thí dụ như tìm một đoạn chứa một hoặc nhiều hơn một kí tự b, hay tìm một hoặc nhiều kí tự dấu cách (while space). mẫu /ab*c/ có thể tìm các đoạn có chứa: một kí tự 'var re = new RegExp("ab+c"); 5, theo sau là không có hoặc có một hoặc có nhiều kí tự var re = new RegExp("ab+c"); 6, cuối cùng là một kí tự var re = new RegExp("ab+c"); 7 như chuỗi var re = new RegExp("ab+c"); 8 sẽ được khớp với xâu con var re = new RegExp("ab+c"); 9.Bảng dưới đây mô tả đầy đủ các kí tự đặc biệt có thể dùng với biểu thức chính quy. 3. Sử dụng ngoặc tròn
Ngoặc tròn bao quanh bất kỳ phần nào của biểu thức chính quy sẽ khiến phần kết quả so khớp được nhớ. Mỗi lần nhớ, chuỗi con có thể được gọi lại để sử dụng, mô tả trong 0.
mẫu /Chapter (\d+).\d*/ khớp đúng với 'Chapter ' theo sau bởi một hoặc nhiều kí tự số, sau nữa là một dấu chấm thập phân, cuối cùng có thể là 0 hoặc nhiều kí tự số. Bên cạnh đó, dấu ngoặc tròn được sử dụng để nhớ một hoặc nhiều kí tự số đầu tiên được khớp.
Mẫu này được tìm thấy trong chuỗi "Open Chapter 4.3, paragraph 6", nhớ '4' nhưng không được tìm thấy trong chuỗi "Chapter 3 and 4", bởi vì chuỗi đó không có dấu chấm sau kí tự số '3'. Để so khớp một chuỗi con không nhớ, đặt ?: ở vị trí đầu tiên trong ngoặc. Ví dụ, (?:\d+) khớp với một hoặc nhiều kí tự số nhưng không nhớ kết quả so khớp.
Kết quả hiển thị là :
Tuy nhiên nếu bạn chạy:
Thì kết quả hiển thị sẽ là:
Sự xuất hiện của /d(b+)d/g trong 2 lệnh trên là những đối tượng biểu thức chính quy khác nhau và vì thế có những giá trị khác nhau cho thuộc tính lastIndex. Nếu bạn cần truy cập những thuộc tính của một biểu thức chính quy, bạn nên gán nó tới một biến. Sử dụng nhiều dấu ngoặc tròn Sử dụng nhiều ngoặc tròn trong một biểu thức chính quy cho ta nhiều kết quả so khớp tương ứng được nhớ. Cho ví dụ, /a(b)c/ khớp với 'abc' và nhớ 'b'. Để gọi lại những kết quả so khớp, sử dụng những phần tử của mảng [1]..., [n]. Số lượng các chuỗi con trong những ngoặc tròn là không giới hạn. Mảng trả về giữ lại tất cả mọi thứ được tìm thấy. Ví dụ: Đoạn mã JavaScript dưới đây sử dụng phương thức 8 để giao hoán các từ trong chuỗi. Trong chuỗi thay thế, ta dùng 9 và 0 để chỉ các chuỗi khớp với mẫu trong ngoặc ở vị trí thứ 1 và 2.
Kết quả hiển thị là: "Smith, John". Bài viết được dịch và tham khảo từ đây |