Hướng dẫn javascript string escape all special characters - chuỗi javascript thoát tất cả các ký tự đặc biệt

Dành: Tính năng này không còn được khuyến nghị. Mặc dù một số trình duyệt vẫn có thể hỗ trợ nó, nhưng nó có thể đã bị xóa khỏi các tiêu chuẩn web có liên quan, có thể đang trong quá trình bị loại bỏ hoặc chỉ có thể được giữ cho mục đích tương thích. Tránh sử dụng nó và cập nhật mã hiện có nếu có thể; Xem bảng tương thích ở cuối trang này để hướng dẫn quyết định của bạn. Xin lưu ý rằng tính năng này có thể ngừng hoạt động bất cứ lúc nào. This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

CẢNH BÁO: Mặc dù escape() không bị phản đối nghiêm ngặt (như trong "bị xóa khỏi các tiêu chuẩn web"), nhưng nó được định nghĩa trong Phụ lục B của tiêu chuẩn ECMA-262, có trạng thái giới thiệu: Although escape() is not strictly deprecated (as in "removed from the Web standards"), it is defined in Annex B of the ECMA-262 standard, whose introduction states:

Tất cả các tính năng và hành vi ngôn ngữ được chỉ định trong phụ lục này có một hoặc nhiều đặc điểm không mong muốn và trong trường hợp không sử dụng di sản sẽ bị xóa khỏi đặc điểm kỹ thuật này. Các lập trình viên không nên sử dụng hoặc cho rằng sự tồn tại của các tính năng và hành vi này khi viết mã Ecmascript mới. …

Hàm escape() tính toán một chuỗi mới trong đó một số ký tự đã được thay thế bằng chuỗi thoát thập lục phân.escape() function computes a new string in which certain characters have been replaced by a hexadecimal escape sequence.

LƯU Ý: Hàm này được sử dụng chủ yếu cho các truy vấn URL (phần của URL sau ____ 10), không thể thoát khỏi các chuỗi chuỗi thông thường, sử dụng định dạng alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)1. (alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)2 là hai chữ số thập lục phân và dạng alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)3 được sử dụng cho các ký tự unicode mặt phẳng cao hơn.) This function was used mostly for URL queries (the part of a URL following alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)0)—not for escaping ordinary String literals, which use the format alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)1. (alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)2 are two hexadecimal digits, and the form alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)3 is used for higher-plane Unicode characters.)

Các ký tự đã thoát trong các chữ cái có thể được mở rộng bằng cách thay thế alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)4 bằng alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)5, sau đó sử dụng hàm alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)6.

Cú pháp

Thông số

alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)7

Một chuỗi được mã hóa.

Giá trị trả về

Một chuỗi mới trong đó một số ký tự đã được thoát ra.

Sự mô tả

Hàm alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)8 là một thuộc tính của đối tượng toàn cầu. Các ký tự đặc biệt được mã hóa ngoại trừ: alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.)9

Hình thức thập lục phân cho các ký tự, có giá trị đơn vị mã là alert( "function g()".match(/g\(\)/) ); // "g()"0 hoặc ít hơn, là một chuỗi thoát hai chữ số: alert( "function g()".match(/g\(\)/) ); // "g()"1. Đối với các ký tự có đơn vị mã lớn hơn, định dạng bốn chữ số alert( "function g()".match(/g\(\)/) ); // "g()"2 được sử dụng.

Ví dụ

Sử dụng lối thoát

escape("abc123"); // "abc123" escape("äöü"); // "%E4%F6%FC" escape("ć"); // "%u0107" // special characters escape("@*_+-./"); // "@*_+-./"

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # sec-escape-string
# sec-escape-string

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Như chúng tôi đã thấy, một dấu gạch chéo ngược alert( "function g()".match(/g\(\)/) ); // "g()"3 được sử dụng để biểu thị các lớp ký tự, ví dụ: alert( "function g()".match(/g\(\)/) ); // "g()"4. Vì vậy, nó là một nhân vật đặc biệt trong RegEXP (giống như trong các chuỗi thông thường).

Cũng có những nhân vật đặc biệt khác, có ý nghĩa đặc biệt trong RegEXP, chẳng hạn như alert( "function g()".match(/g\(\)/) ); // "g()"5. Chúng được sử dụng để thực hiện các tìm kiếm mạnh mẽ hơn.

Don Tiết cố gắng ghi nhớ danh sách - chẳng mấy chốc chúng tôi sẽ đối phó với từng người trong số họ và bạn sẽ tự động biết họ bằng trái tim.

Trốn thoát

Hãy nói rằng chúng tôi muốn tìm một dấu chấm theo nghĩa đen. Không phải là bất kỳ nhân vật nào, mà chỉ là một dấu chấm.

Để sử dụng một ký tự đặc biệt như một nhân vật thông thường, hãy dành cho nó bằng một dấu gạch chéo ngược: alert( "function g()".match(/g\(\)/) ); // "g()"6.

Đó cũng là người được gọi là Escaping 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 \.)

Điểm dừng cũng là những nhân vật đặc biệt, vì vậy nếu chúng ta muốn chúng, chúng ta nên sử dụng alert( "function g()".match(/g\(\)/) ); // "g()"7. Ví dụ dưới đây tìm kiếm một chuỗi alert( "function g()".match(/g\(\)/) ); // "g()"8:

alert( "function g()".match(/g\(\)/) ); // "g()"

Nếu chúng tôi đang tìm kiếm một dấu gạch chéo ngược alert( "function g()".match(/g\(\)/) ); // "g()"3, thì đó là một nhân vật đặc biệt trong cả hai chuỗi thông thường và regexps, vì vậy chúng tôi nên nhân đôi nó.

alert( "1\\2".match(/\\/) ); // '\'

Một chém

Một biểu tượng chém alert( "1\\2".match(/\\/) ); // '\'0 không phải là một nhân vật đặc biệt, nhưng trong JavaScript, nó được sử dụng để mở và đóng regexp: alert( "1\\2".match(/\\/) ); // '\'1, vì vậy chúng ta cũng nên thoát khỏi nó.

Ở đây, những gì một tìm kiếm cho một chém alert( "1\\2".match(/\\/) ); // '\'0 trông giống như:

alert( "/".match(/\//) ); // '/'

Mặt khác, nếu chúng tôi không sử dụng alert( "1\\2".match(/\\/) ); // '\'3, nhưng tạo ra một regexp bằng cách sử dụng alert( "1\\2".match(/\\/) ); // '\'4, thì chúng tôi không cần phải thoát khỏi nó:

alert( "/".match(new RegExp("/")) ); // finds /

Regexp mới

Nếu chúng ta đang tạo ra một biểu thức chính quy với alert( "1\\2".match(/\\/) ); // '\'4, thì chúng ta không phải trốn thoát alert( "1\\2".match(/\\/) ); // '\'6, nhưng cần phải thực hiện một số trốn 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 những ví dụ trước đã làm việc với alert( "1\\2".match(/\\/) ); // '\'7, nhưng alert( "1\\2".match(/\\/) ); // '\'8 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 nhân vật đặc biệt của riêng họ, chẳng hạn như alert( "1\\2".match(/\\/) ); // '\'9 và một dấu gạch chéo ngược được sử dụng để trốn thoát.

Ở đây, cách thức, cách thức của \ d.

Chuỗi trích dẫn của người Hồi giáo tiêu thụ dấu vết chéo ngược và tự giải thích chúng, ví dụ:

  • alert( "1\\2".match(/\\/) ); // '\'9 - trở thành một nhân vật mới,
  • alert( "/".match(/\//) ); // '/'1 - trở thành ký tự Unicode với mã đó,
  • Và khi không có ý nghĩa đặc biệt: như alert( "function g()".match(/g\(\)/) ); // "g()"4 hoặc alert( "/".match(/\//) ); // '/'3, thì dấu gạch chéo ngược được loại bỏ đơn giản.

Vì vậy, alert( "1\\2".match(/\\/) ); // '\'4 có một chuỗi mà không có dấu gạch chéo ngược. Đó là lý do tại sao việc tìm kiếm không hoạt động!

Để sửa nó, chúng ta cần tăng gấp đôi các dấu gạch chéo ngược, vì trích dẫn chuỗi biến alert( "/".match(/\//) ); // '/'5 thành alert( "function g()".match(/g\(\)/) ); // "g()"3:

let regStr = "\\d\\.\\d"; alert(regStr); // \d\.\d (correct now) let regexp = new RegExp(regStr); alert( "Chapter 5.1".match(regexp) ); // 5.1

Bản tóm tắt

  • Để tìm kiếm các nhân vật đặc biệt alert( "/".match(/\//) ); // '/'7 theo nghĩa đen, chúng ta cần chuẩn bị cho họ bằng một dấu gạch chéo ngược alert( "function g()".match(/g\(\)/) ); // "g()"3 (Escape Escape họ).
  • Chúng ta cũng cần thoát alert( "1\\2".match(/\\/) ); // '\'6 nếu chúng ta ở bên trong alert( "1\\2".match(/\\/) ); // '\'3 (nhưng không phải bên trong alert( "1\\2".match(/\\/) ); // '\'4).
  • Khi chuyển một chuỗi cho alert( "1\\2".match(/\\/) ); // '\'4, chúng ta cần tăng gấp đôi so với alert( "/".match(/\//) ); // '/'5, gây ra trích dẫn chuỗi tiêu thụ một trong số chúng.

Tôi có thể thoát khỏi các ký tự đặc biệt của HTML trong JavaScript không?

Chuỗi - chúng ta có thể chuyển bất kỳ chuỗi HTML nào dưới dạng đối số để thoát khỏi các ký tự đặc biệt và mã hóa nó.We can pass any HTML string as an argument to escape special characters and encode it.

Escapehtml trong JavaScript là gì?

Nguyên mẫu - Phương thức Escapehtml () Phương thức này chuyển đổi các ký tự đặc biệt HTML thành các tương đương thực thể của chúng.converts HTML special characters to their entity equivalents.

Những nhân vật nào cần được thoát khỏi JavaScript?

Bất kỳ ký tự nào có mã ký tự thấp hơn 256 (nghĩa là bất kỳ ký tự nào trong phạm vi ASCII mở rộng) đều có thể được thoát bằng mã ký tự được mã hóa hex, được đặt trước với \ x.(Lưu ý rằng đây là cùng một loạt các ký tự có thể được thoát qua những lối thoát octal.) (i.e. any character in the extended ASCII range) can be escaped using its hex-encoded character code, prefixed with \x . (Note that this is the same range of characters that can be escaped through octal escapes.)

Tôi có thể sử dụng gì thay vì trốn thoát trong JavaScript?

JavaScript Escape () Hàm Escape () không được chấp nhận.Sử dụng encodeURI () hoặc encodeuricomponent () thay thế.encodeURI() or encodeURIComponent() instead.

Chủ đề