Như chúng ta đã thấy, dấu gạch chéo ngược \
được sử dụng để biểu thị các lớp ký tự, e. g. \d
. Vì vậy, nó là một ký tự đặc biệt trong biểu thức chính quy [giống như trong các chuỗi thông thường]
Ngoài ra còn có các ký tự đặc biệt khác, có ý nghĩa đặc biệt trong biểu thức chính quy, chẳng hạn như
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
0. Chúng được sử dụng để thực hiện các tìm kiếm mạnh mẽ hơnĐừng cố ghi nhớ danh sách – chúng ta sẽ sớm xử lý từng danh sách và bạn sẽ tự động thuộc lòng chúng
Giả sử chúng ta muốn tìm một dấu chấm theo đúng nghĩa đen. Không phải "bất kỳ ký tự nào", mà chỉ là một dấu chấm
Để sử dụng ký tự đặc biệt làm ký tự thông thường, hãy thêm dấu gạch chéo ngược vào trước ký tự đó.
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
1Đó cũng được gọi là "thoát khỏi một nhân vật"
Ví dụ
alert[ "Chapter 5.1".match[/\d\.\d/] ]; // 5.1 [match!]
alert[ "Chapter 511".match[/\d\.\d/] ]; // null [looking for a real dot \.]
Dấu ngoặc đơn cũng là ký tự đặc biệt nên nếu muốn chúng ta dùng
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
2. Ví dụ dưới đây tìm kiếm một chuỗi alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
3alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
Nếu chúng ta đang tìm dấu gạch chéo ngược \
, thì đó là một ký tự đặc biệt trong cả chuỗi thông thường và biểu thức chính quy, vì vậy chúng ta nên nhân đôi nó
alert[ "1\\2".match[/\\/] ]; // '\'
Ký hiệu dấu gạch chéo
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
5 không phải là một ký tự đặc biệt, nhưng trong JavaScript, nó được sử dụng để mở và đóng biểu thức chính quy. alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
6, vì vậy chúng ta cũng nên thoát khỏi nóĐây là cách tìm kiếm dấu gạch chéo
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
5alert[ "/".match[/\//] ]; // '/'
Mặt khác, nếu chúng tôi không sử dụng
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
8, nhưng tạo biểu thức chính quy bằng cách sử dụng alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
9, thì chúng tôi không cần phải thoát khỏi nóalert[ "/".match[new RegExp["/"]] ]; // finds /
Nếu chúng ta đang tạo một biểu thức chính quy với
alert[ "function g[]".match[/g\[\]/] ]; // "g[]"
9, thì chúng ta không cần phải thoát khỏi alert[ "1\\2".match[/\\/] ]; // '\'
1 mà cần thực hiện một số thao tác thoát khácVí dụ, hãy xem xét điều này
let regexp = new RegExp["\d\.\d"];
alert[ "Chapter 5.1".match[regexp] ]; // null
Tìm kiếm tương tự trong một trong các ví dụ trước đã hoạt động với
alert[ "1\\2".match[/\\/] ]; // '\'
2, nhưng alert[ "1\\2".match[/\\/] ]; // '\'
3 không hoạt động, tại sao?Lý do là các dấu gạch chéo ngược được "tiêu thụ" bởi một chuỗi. Như chúng ta có thể nhớ lại, các chuỗi thông thường có các ký tự đặc biệt của riêng chúng, chẳng hạn như
alert[ "1\\2".match[/\\/] ]; // '\'
4 và dấu gạch chéo ngược được sử dụng để thoát chr HexCode Numeric HTML entity escape[chr] encodeURI[chr] Description "\x22
"
"
%22
%22
quotation mark &\x26
&
&
%26
&
ampersand