Các ký tự đặc biệt trong JavaScript là gì?

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[]"
3

alert[ "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[]"
5

alert[ "/".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ác

Ví 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

Chủ Đề