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.