Hướng dẫn backslash in javascript - dấu gạch chéo ngược trong javascript

Do một dấu gạch chéo ngược duy nhất, tôi không thể gửi giá trị chính xác đến máy chủ, vì vậy các dấu gạch chéo đơn cần phải được thay thế bằng các dấu gạch chéo ngược trong tập lệnh.

Nội phân Chính showShow

  • Tạo một biểu thức chính quy
  • Viết một mẫu biểu thức chính quy
  • Sử dụng các mẫu đơn giản
  • Sử dụng các ký tự đặc biệt
  • Sử dụng dấu ngoặc đơn
  • Sử dụng các biểu thức chính quy trong JavaScript
  • Tìm kiếm nâng cao với cờ
  • Sử dụng các ký tự đặc biệt để xác minh đầu vào

Tôi sử dụng hàm

str.replace[/\\/g, "\\\\"];
7 như được hiển thị bên dưới nhưng nó không hoạt động:

str.replace[/\/g, "\\"];

Ai đó có thể giúp tôi tìm đúng cách không?

AMN

7.9528 Huy hiệu vàng54 Huy hiệu bạc86 Huy hiệu Đồng8 gold badges54 silver badges86 bronze badges

Đã hỏi ngày 6 tháng 10 năm 2021 lúc 16:54Oct 6, 2021 at 16:54

4

Bạn phải thoát khỏi dấu gạch chéo ngược trong cả biểu thức thông thường và chuỗi thay thế. Như Epascarello đã viết, biểu thức sau đây sẽ hoạt động:

str.replace[/\\/g, "\\\\"];

AMN

7.9528 Huy hiệu vàng54 Huy hiệu bạc86 Huy hiệu Đồng8 gold badges54 silver badges86 bronze badges

Đã hỏi ngày 6 tháng 10 năm 2021 lúc 16:54Oct 13, 2021 at 13:28

Bạn phải thoát khỏi dấu gạch chéo ngược trong cả biểu thức thông thường và chuỗi thay thế. Như Epascarello đã viết, biểu thức sau đây sẽ hoạt động:Jinu

Đã trả lời ngày 13 tháng 10 năm 2021 lúc 13:289 bronze badges

  • Jinujinu
  • 689 huy hiệu đồng

" Trước

Tạo một biểu thức chính quy

Tiếp theo "

  • Biểu thức chính quy là các mẫu được sử dụng để phù hợp với kết hợp ký tự trong chuỗi. Trong JavaScript, các biểu thức chính quy cũng là đối tượng. Các mẫu này được sử dụng với các phương pháp
    str.replace[/\\/g, "\\\\"];
    
    8 và
    str.replace[/\\/g, "\\\\"];
    
    9 của
    const re = new RegExp['ab+c'];
    
    0 và với
    const re = new RegExp['ab+c'];
    
    1,
    const re = new RegExp['ab+c'];
    
    2,
    const re = new RegExp['ab+c'];
    
    3,
    const re = new RegExp['ab+c'];
    
    4,
    const re = new RegExp['ab+c'];
    
    5 và
    const re = new RegExp['ab+c'];
    
    6 của
    const re = new RegExp['ab+c'];
    
    7. Chương này mô tả các biểu thức thường xuyên của JavaScript.
  • Bạn xây dựng một biểu thức chính quy theo một trong hai cách:

Viết một mẫu biểu thức chính quy

Sử dụng các mẫu đơn giản

Sử dụng các ký tự đặc biệt If you are already familiar with the forms of a regular expression, you may also read the cheatsheet for a quick lookup for a specific pattern/construct.

Sử dụng các mẫu đơn giản

Sử dụng các ký tự đặc biệt

Sử dụng các ký tự đặc biệt

Sử dụng dấu ngoặc đơn

Sử dụng các biểu thức chính quy trong JavaScript

Tìm kiếm nâng cao với cờ

Sử dụng các ký tự đặc biệt để xác minh đầu vào

Tôi sử dụng hàm
str.replace[/\\/g, "\\\\"];
7 như được hiển thị bên dưới nhưng nó không hoạt động:

Ai đó có thể giúp tôi tìm đúng cách không?

AMN

7.9528 Huy hiệu vàng54 Huy hiệu bạc86 Huy hiệu Đồng

Đã hỏi ngày 6 tháng 10 năm 2021 lúc 16:54

Bạn phải thoát khỏi dấu gạch chéo ngược trong cả biểu thức thông thường và chuỗi thay thế. Như Epascarello đã viết, biểu thức sau đây sẽ hoạt động:

Đã trả lời ngày 13 tháng 10 năm 2021 lúc 13:28

Jinujinu

Nếu bạn muốn xem tất cả các ký tự đặc biệt có thể được sử dụng trong các biểu thức thông thường trong một bảng, hãy xem phần sau:

Trốn thoát

Nếu bạn cần sử dụng bất kỳ ký tự đặc biệt nào theo nghĩa đen [thực sự đang tìm kiếm một

const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
8, ví dụ], bạn phải thoát khỏi nó bằng cách đặt một dấu gạch chéo ngược trước nó. Chẳng hạn, để tìm kiếm
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
0 sau đó là
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
8 sau đó là
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
1, bạn sẽ sử dụng
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]
2 - dấu gạch chéo ngược "thoát ra"
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
8, làm cho nó theo nghĩa đen thay vì đặc biệt.

Tương tự, nếu bạn đang viết một biểu thức thông thường theo nghĩa đen và cần phải kết hợp một dấu gạch chéo ["/"], bạn cần thoát khỏi điều đó [nếu không, nó sẽ chấm dứt mẫu]. Chẳng hạn, để tìm kiếm chuỗi "/ví dụ/" Theo sau là một hoặc nhiều ký tự chữ cái, bạn sẽ sử dụng ____ 54, các dấu gạch chéo ngược trước mỗi lần cắt làm cho chúng theo nghĩa đen.

Để phù hợp với một dấu gạch chéo ngược theo nghĩa đen, bạn cần thoát khỏi dấu gạch chéo ngược. Chẳng hạn, để khớp với chuỗi "C: \" trong đó "C" có thể là bất kỳ chữ cái nào, bạn sẽ sử dụng

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]
5 - dấu gạch chéo ngược đầu tiên thoát khỏi chữ cái sau đó, do đó, biểu thức tìm kiếm một dấu gạch chéo ngược.

Nếu sử dụng hàm tạo

const re = new RegExp['ab+c'];
0 với một chuỗi theo nghĩa đen, hãy nhớ rằng dấu gạch chéo ngược là một lối thoát trong các chuỗi chữ, vì vậy để sử dụng nó trong biểu thức thông thường, bạn cần thoát nó ở cấp độ theo nghĩa đen.
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]
2 và
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]
8 tạo ra cùng một biểu thức, tìm kiếm "A" theo nghĩa đen "*" theo sau là "B".

Nếu chuỗi thoát chưa phải là một phần trong mẫu của bạn, bạn có thể thêm chúng bằng cách sử dụng

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]
9:

function escapeRegExp[string] {
  return string.replace[/[.*+?^${}[]|[\]\\]/g, '\\$&']; // $& means the whole matched string
}

"G" sau khi biểu thức thông thường là một tùy chọn hoặc cờ thực hiện tìm kiếm toàn cầu, nhìn vào toàn bộ chuỗi và trả về tất cả các trận đấu. Nó được giải thích chi tiết dưới đây trong tìm kiếm nâng cao với cờ.

Tại sao điều này không được xây dựng trong JavaScript? Có một đề xuất để thêm một chức năng như vậy vào regexp.

Sử dụng dấu ngoặc đơn

Điểm dừng xung quanh bất kỳ phần nào của mẫu biểu thức chính quy gây ra một phần của chuỗi con phù hợp được ghi nhớ. Sau khi nhớ, phần phụ có thể được thu hồi cho việc sử dụng khác. Xem các nhóm và backrefer để biết thêm chi tiết.

Sử dụng các biểu thức chính quy trong JavaScript

Các biểu thức chính quy được sử dụng với các phương pháp

const re = new RegExp['ab+c'];
0
str.replace[/\\/g, "\\\\"];
9 và
str.replace[/\\/g, "\\\\"];
8 và với các phương thức
const re = new RegExp['ab+c'];
7
const re = new RegExp['ab+c'];
1,
const re = new RegExp['ab+c'];
3,
const re = new RegExp['ab+c'];
5 và
const re = new RegExp['ab+c'];
6.

Khi bạn muốn biết liệu một mẫu được tìm thấy trong một chuỗi, hãy sử dụng các phương thức

str.replace[/\\/g, "\\\\"];
9 hoặc
const re = new RegExp['ab+c'];
5; Để biết thêm thông tin [nhưng thực hiện chậm hơn] sử dụng các phương thức
str.replace[/\\/g, "\\\\"];
8 hoặc
const re = new RegExp['ab+c'];
1. Nếu bạn sử dụng
str.replace[/\\/g, "\\\\"];
8 hoặc
const re = new RegExp['ab+c'];
1 và nếu trận đấu thành công, các phương thức này sẽ trả về một mảng và các thuộc tính cập nhật của đối tượng biểu thức chính quy được liên kết và cả đối tượng biểu thức chính quy được xác định trước,
const re = new RegExp['ab+c'];
0. Nếu trận đấu không thành công, phương thức
str.replace[/\\/g, "\\\\"];
8 trả về
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${myRe.lastIndex}`];

// "The value of lastIndex is 5"
6 [ép buộc thành
const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${myRe.lastIndex}`];

// "The value of lastIndex is 5"
7].

Trong ví dụ sau, tập lệnh sử dụng phương thức

str.replace[/\\/g, "\\\\"];
8 để tìm khớp trong một chuỗi.

const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];

Nếu bạn không cần truy cập các thuộc tính của biểu thức thông thường, một cách khác để tạo

const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${myRe.lastIndex}`];

// "The value of lastIndex is 5"
9 là với tập lệnh này:

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
// similar to 'cdbbdbsbz'.match[/d[b+]d/g]; however,
// 'cdbbdbsbz'.match[/d[b+]d/g] outputs [ "dbbd" ]
// while /d[b+]d/g.exec['cdbbdbsbz'] outputs [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ]

[Xem bằng cách sử dụng cờ tìm kiếm toàn cầu với

str.replace[/\\/g, "\\\\"];
8 để biết thêm thông tin về các hành vi khác nhau.]

Nếu bạn muốn xây dựng biểu thức thông thường từ một chuỗi, nhưng một giải pháp khác là tập lệnh này:

const myRe = new RegExp['d[b+]d', 'g'];
const myArray = myRe.exec['cdbbdbsbz'];

Với các tập lệnh này, trận đấu thành công và trả về mảng và cập nhật các thuộc tính được hiển thị trong bảng sau.

Như được hiển thị trong dạng thứ hai của ví dụ này, bạn có thể sử dụng một biểu thức chính quy được tạo bằng trình khởi tạo đối tượng mà không cần gán nó cho một biến. Tuy nhiên, nếu bạn làm, mọi sự xuất hiện là một biểu thức chính quy mới. Vì lý do này, nếu bạn sử dụng biểu mẫu này mà không gán nó cho một biến, sau đó bạn không thể truy cập các thuộc tính của biểu thức thông thường đó. Ví dụ: giả sử bạn có tập lệnh này:

const myRe = /d[b+]d/g;
const myArray = myRe.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${myRe.lastIndex}`];

// "The value of lastIndex is 5"

Tuy nhiên, nếu bạn có tập lệnh này:

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"

Sự xuất hiện của

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
1 trong hai câu lệnh là các đối tượng biểu thức chính quy khác nhau và do đó có các giá trị khác nhau cho thuộc tính
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
2 của chúng. Nếu bạn cần truy cập các thuộc tính của biểu thức chính quy được tạo bằng trình khởi tạo đối tượng, trước tiên bạn nên gán nó cho một biến.

Tìm kiếm nâng cao với cờ

Biểu thức chính quy có các cờ tùy chọn cho phép chức năng như tìm kiếm toàn cầu và tìm kiếm không nhạy cảm trường hợp. Những lá cờ này có thể được sử dụng riêng biệt hoặc cùng nhau theo bất kỳ thứ tự nào, và được bao gồm như một phần của biểu thức thông thường.

Để bao gồm một lá cờ có biểu thức thông thường, hãy sử dụng cú pháp này:

const re = /pattern/flags;

hoặc

str.replace[/\\/g, "\\\\"];
0

Lưu ý rằng các cờ là một phần không thể thiếu của biểu thức chính quy. Họ không thể được thêm hoặc loại bỏ sau này.

Ví dụ,

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
3 tạo ra một biểu thức chính quy tìm kiếm một hoặc nhiều ký tự theo sau là một không gian và nó tìm kiếm sự kết hợp này trong suốt chuỗi.

str.replace[/\\/g, "\\\\"];
1

Bạn có thể thay thế dòng:

with:

str.replace[/\\/g, "\\\\"];
2

và nhận được kết quả tương tự.

Cờ

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
4 được sử dụng để chỉ định rằng một chuỗi đầu vào đa dòng nên được coi là nhiều dòng. Nếu cờ
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
4 được sử dụng,
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
6 và
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
7 khớp khi bắt đầu hoặc kết thúc bất kỳ dòng nào trong chuỗi đầu vào thay vì bắt đầu hoặc kết thúc toàn bộ chuỗi.

Sử dụng cờ tìm kiếm toàn cầu với Exec []

Phương thức

const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
8 với cờ
const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];

// "The value of lastIndex is 0"
9 trả về mỗi trận đấu và vị trí của nó lặp đi lặp lại.

str.replace[/\\/g, "\\\\"];
3

Ngược lại, phương thức

const re = /pattern/flags;
0 trả về tất cả các trận đấu cùng một lúc, nhưng không có vị trí của chúng.

str.replace[/\\/g, "\\\\"];
4

Sử dụng các biểu thức chính quy Unicode

Cờ "U" được sử dụng để tạo các biểu thức chính quy "unicode"; Đó là, các biểu thức thường xuyên hỗ trợ khớp với văn bản Unicode. Điều này chủ yếu được thực hiện thông qua việc sử dụng các Escapes thuộc tính Unicode, chỉ được hỗ trợ trong các biểu thức chính quy "Unicode".

Ví dụ: biểu thức chính quy sau đây có thể được sử dụng để khớp với một "từ" unicode tùy ý: từ ":

Có một số khác biệt khác giữa các biểu thức chính quy Unicode và Nonicode mà người ta nên biết:

  • Các biểu thức chính quy của Unicode không hỗ trợ cái gọi là "thoát khỏi danh tính"; Đó là, các mô hình không cần phải bỏ qua một dấu gạch chéo ngược và bị bỏ qua một cách hiệu quả. Ví dụ:
    const re = /pattern/flags;
    
    1 là một biểu thức chính quy hợp lệ khớp với chữ 'A', nhưng
    const re = /pattern/flags;
    
    2 thì không.
  • Giá đỡ xoăn cần phải được thoát ra khi không được sử dụng làm định lượng. Ví dụ:
    const re = /pattern/flags;
    
    3 là một biểu thức chính quy hợp lệ khớp với giá đỡ của khung '{', nhưng
    const re = /pattern/flags;
    
    4 không - thay vào đó, giá đỡ nên được thoát ra và
    const re = /pattern/flags;
    
    5 nên được sử dụng thay thế.
  • Nhân vật
    const re = /pattern/flags;
    
    6 được giải thích khác nhau trong các lớp ký tự. Cụ thể, đối với các biểu thức chính quy Unicode,
    const re = /pattern/flags;
    
    6 được hiểu là một
    const re = /pattern/flags;
    
    6 theo nghĩa đen [và không phải là một phần của phạm vi] chỉ khi nó xuất hiện ở đầu hoặc cuối của lớp ký tự. Ví dụ,
    const re = /pattern/flags;
    
    9 là một biểu thức chính quy hợp lệ khớp với ký tự từ,
    const re = /pattern/flags;
    
    6 hoặc
    str.replace[/\\/g, "\\\\"];
    
    01, nhưng
    str.replace[/\\/g, "\\\\"];
    
    02 là một biểu thức chính quy không hợp lệ, vì
    str.replace[/\\/g, "\\\\"];
    
    03 đến
    str.replace[/\\/g, "\\\\"];
    
    01 không phải là một phạm vi ký tự được xác định rõ.

Các biểu thức chính quy của Unicode cũng có hành vi thực thi khác nhau là tốt.

str.replace[/\\/g, "\\\\"];
05 chứa nhiều lời giải thích hơn về điều này.

Ví dụ

Lưu ý: Một số ví dụ cũng có sẵn trong: Several examples are also available in:

  • Các trang tham chiếu cho
    str.replace[/\\/g, "\\\\"];
    
    8,
    str.replace[/\\/g, "\\\\"];
    
    9,
    const re = new RegExp['ab+c'];
    
    1,
    const re = new RegExp['ab+c'];
    
    2,
    const re = new RegExp['ab+c'];
    
    5,
    const re = new RegExp['ab+c'];
    
    3,
    const re = new RegExp['ab+c'];
    
    6
  • Các bài viết hướng dẫn: Các lớp nhân vật, xác nhận, nhóm và backrefer, định lượng, tài sản Unicode thoát khỏi

Sử dụng các ký tự đặc biệt để xác minh đầu vào

Trong ví dụ sau, người dùng dự kiến ​​sẽ nhập số điện thoại. Khi người dùng nhấn nút "Kiểm tra", tập lệnh sẽ kiểm tra tính hợp lệ của số. Nếu số là hợp lệ [khớp với chuỗi ký tự được chỉ định bởi biểu thức chính quy], tập lệnh hiển thị một thông báo cảm ơn người dùng và xác nhận số. Nếu số không hợp lệ, tập lệnh thông báo cho người dùng rằng số điện thoại không hợp lệ.

Biểu thức chính quy tìm kiếm:

  1. Sự khởi đầu của dòng dữ liệu:
    const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
    console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];
    
    // "The value of lastIndex is 0"
    
    6
  2. tiếp theo là ba ký tự số
    str.replace[/\\/g, "\\\\"];
    
    14 hoặc
    str.replace[/\\/g, "\\\\"];
    
    15 Một dấu ngoặc trái
    str.replace[/\\/g, "\\\\"];
    
    16, sau đó là ba chữ số
    str.replace[/\\/g, "\\\\"];
    
    14, sau đó là dấu ngoặc đơn gần
  3. tiếp theo là một dấu gạch ngang, chém về phía trước, hoặc dấu thập phân trong một nhóm bắt giữ
    str.replace[/\\/g, "\\\\"];
    
    20
  4. tiếp theo là ba chữ số
    str.replace[/\\/g, "\\\\"];
    
    14
  5. tiếp theo là trận đấu được ghi nhớ trong nhóm [đầu tiên] bị bắt
    str.replace[/\\/g, "\\\\"];
    
    22
  6. tiếp theo là bốn chữ số
    str.replace[/\\/g, "\\\\"];
    
    23
  7. theo sau là kết thúc dòng dữ liệu:
    const myArray = /d[b+]d/g.exec['cdbbdbsbz'];
    console.log[`The value of lastIndex is ${/d[b+]d/g.lastIndex}`];
    
    // "The value of lastIndex is 0"
    
    7

HTML

str.replace[/\\/g, "\\\\"];
5

JavaScript

str.replace[/\\/g, "\\\\"];
6

Kết quả

REGEXR

Một công cụ trực tuyến để tìm hiểu, xây dựng và kiểm tra các biểu thức thường xuyên.

REGEX TESTER

Một trình xây dựng/trình xây dựng regex trực tuyến

Hướng dẫn tương tác Regex

Một hướng dẫn tương tác trực tuyến, gian lận, & sân chơi.

REGEX Visualizer

Một người thử nghiệm trực quan trực tuyến.

  • " Trước
  • Tiếp theo "

Bài Viết Liên Quan

Chủ Đề