Regular Expression và RegExp trong JavaScript
Một Regular Expression là một đối tượng miêu tả một pattern của các ký tự. Lớp JavaScript RegExp biểu diễn Regular Expression, và cả String và RegExp định nghĩa các phương thức mà sử dụng Regular Expression để thực hiện các hàm so khớp pattern và tìm kiếm-thay thế mạnh trên văn bản Cú pháp ...
Một Regular Expression là một đối tượng miêu tả một pattern của các ký tự.
Lớp JavaScript RegExp biểu diễn Regular Expression, và cả String và RegExp định nghĩa các phương thức mà sử dụng Regular Expression để thực hiện các hàm so khớp pattern và tìm kiếm-thay thế mạnh trên văn bản
Cú pháp
Một Regular Expression có thể được định nghĩa với RegExp () constructor như sau:
var pattern = new RegExp(pattern, attributes); or simply var pattern = /pattern/attributes;
Miêu tả tham số
-
pattern − Một chuỗi mà xác định pattern của Regular Expression hoặc Regular Expression khác.
-
attributes − Một chuỗi tùy chọn chứa bất kỳ thuộc tính "g", "i", và "m" mà xác định tương ứng Global, Không phân biệt kiểu chữ (case-insensitive), và nhiều so khớp (multiline matches)
Các dấu ngoặc vuông
Các dấu ngoặc vuông ([]) có một ý nghĩa đặc biệt khi được sử dụng trong Regular Expression. Chúng được sử dụng để tìm một dãy ký tự.
[...] Bất kỳ một ký tự nào trong dấu ngoặc vuông [^...] Bất kỳ một ký tự nào không trong dấu ngoặc vuông [0-9] Nó so khớp bất kỳ số thập phân nào từ 0 đến 9 [a-z] Nó so khớp bất kỳ ký tự chữ thường nào từ a đến z. [A-Z] Nó so khớp bất kỳ ký tự chữ hoa nào từ A đến Z. [a-Z] Nó so khớp bất kỳ ký tự nào từ chữ thường a đến chữ hoa Z.
Các dãy được chỉ ở trên là chung; bạn cũng có thể sử dụng dãy [0-3] để so khớp bất kỳ số thập phân nào từ 0 đến 3, hoặc dãy [b-v] để so khớp bất kỳ ký tự chữ thường nào từ b đến v.
Phép lượng hóa (Quantifier)
Tần số và vị trí của các dãy ký tự và các ký tự đơn được bao trong các dấu ngoặc có thể được biểu thị bởi một ký tự đặc biệt. Mỗi ký tự đặc biệt có một phần mở rộng riêng biệt. Các +, * … theo sau một dãy ký tự.
p+ Nó so khớp bất kỳ chuỗi nào chứa ít nhất một p. p* Nó so khớp bất kỳ chuỗi nào chứa 0 hoặc nhiều p. p? Nó so khớp bất kỳ chuỗi nào chứa 1 hoặc nhiều p p{N} Nó so khớp bất kỳ chuỗi nào chứa một dãy có {N} p p{2,3} Nó so khớp bất kỳ chuỗi nào chứa một dãy có 2 hoặc 3 p p{2, } Nó so khớp bất kỳ chuỗi nào chứa một dãy có ít nhất 2 p p$ Nó so khớp bất kỳ chuỗi nào kết thúc với p ^p Nó so khớp bất kỳ chuỗi nào bắt đầu bằng p
Ví dụ:
[^a-zA-Z] Nó so khớp bất kỳ chuỗi nào không chứa bất kỳ ký tự từ a đến z và từ A đến Z. p.p Nó so khớp bất kỳ chuỗi nào chứa p, được theo sau bởi bất kỳ ký tự nào, theo sau bởi một ký tự p khác. ^.{2}$ Nó so khớp bất kỳ chuỗi nào chứa chính xác 2 ký tự <b>(.*)</b> Nó so khớp bất kỳ chuỗi nào trong thẻ <b> và </b>. p(hp)* Nó so khớp bất kỳ chuỗi nào chứa p được theo sau bởi 0 hoặc nhiều dãy hp.
Các ký tự Literal
Alphanumeric Chính nó Ký tự NUL (u0000) Tab (u0009) Dòng mới (u000A) v Tab dọc (u000B) f Form feed (u000C) Carriage return (u000D) xnn Ký tự Latin được xác định bởi số thập lục phân nn; ví dụ: x0A là như uxxxx Ký tự Unicode được xác định bởi số thập lục phân xxxx; ví dụ: u0009 là cX Ký tự điều khiển ^X; Ví dụ: cJ tương đương với ký tự dòng mới
Siêu ký tự (Metacharacter)
Một metacharacter đơn giản là một ký tự chữ cái được đặt trước bởi một dấu gạch chéo ngược mà thực hiện so khớp một ý nghĩa đặc biệt.
Ví dụ, bạn có thể tìm kiếm một lượng tiền lớn bởi sử dụng siêu ký tự 'd' là: /([d]+)000/. Ở đây, d sẽ tìm bất kỳ chuỗi ký tự số nào.
Sau đây là tập hợp các siêu ký tự mà có thể được sử dụng trong PERL Style Regular Expression.
. Một ký tự đơn s Một ký tự khoảng trống trắng (space, tab, dòng mới) S Không phải ký tự khoảng trống trắng d Một chữ số (0-9) D Không là chữ số w Một ký tự từ (a-z, A-Z, 0-9, _) W Không là một ký tự từ [] Một literal backspace (trường hợp đặc biệt) [aeiou] So khớp một ký tự đơn trong tập hợp đã cho [^aeiou] So khớp một ký tự đơn bên ngoài tập hợp đã cho (foo|bar|baz) So khớp bất kỳ các dãy thay đổi nhau đã cho
Lượng hóa (Modifier)
Một số lượng hóa là có sẵn mà có thể xác định cách bạn làm việc với regexp, như phân biệt kiểu chữ, tìm kiếm nhiều dòng, …
i Thực hiện so khớp không phân biệt kiểu chữ (case-insensitive). m Xác định nếu chuỗi có các ký tự newline (dòng mới) hoặc carriage return , toán tử ^ và $ sẽ so khớp với một giới hạn newline (dòng mới), thay vì một giới hạn chuỗi. g Thực hiện so khớp Global, mà tìm tất cả các so khớp thay vì dừng lại sau so khớp đầu tiên.
Các thuộc tính của RegExp
Danh sách các thuộc tính của đối tượng RegExp và miêu tả:
constructor Xác định hàm tạo prototype của đối tượng. global Xác định nếu lượng hóa "g" được thiết lập ignoreCase Xác định nếu lượng hóa "i" được thiết lập lastIndex Chỉ mục tại đó bắt đầu so khớp mới multiline Xác định nếu lượng hóa "m" được thiết lập source Văn bản của pattern
Các phương thức của RegExp
Danh sách các phương thức của đối tượng RegExp và miêu tả:
exec() Thực thi một tìm kiếm cho một so khớp trong tham số chuỗi của nó. test() Kiểm tra một so khớp trong tham số chuỗi của nó. toSource() Trả về một literal đối tượng biểu diễn đối tượng đã cho; bạn có thể sử dụng giá trị này để tạo đối tượng mới. toString() Trả về một chuỗi biểu diễn đối tượng đã cho.