Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Tôi có một dự án, trong đó một số var JavaScript được đánh giá. Vì chuỗi cần được thoát (chỉ trích dẫn đơn), tôi đã viết cùng một mã chính xác trong một hàm thử nghiệm. Tôi có phần sau của mã JavaScript khá đơn giản:

function testEscape() {
    var strResult = "";
    var strInputString = "fsdsd'4565sd";

    // Here, the string needs to be escaped for single quotes for the eval 
    // to work as is. The following does NOT work! Help!
    strInputString.replace(/'/g, "''");

    var strTest = "strResult = '" + strInputString + "';";
    eval(strTest);
    alert(strResult);
}

Và tôi muốn cảnh báo nó, nói: fsdsd'4565sd.

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Đã hỏi ngày 26 tháng 2 năm 2013 lúc 11:06Feb 26, 2013 at 11:06

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Florian Mertensflorian MertensFlorian Mertens

2.3484 Huy hiệu vàng26 Huy hiệu bạc37 Huy hiệu đồng4 gold badges26 silver badges37 bronze badges

2

Vấn đề là

strInputString = strInputString.replace(...
0 không tự sửa đổi chuỗi, vì vậy bạn nên viết một cái gì đó như:

strInputString = strInputString.replace(...

Có vẻ như bạn không thực hiện nhân vật trốn thoát chính xác. Những điều sau đây làm việc cho tôi:

strInputString = strInputString.replace(/'/g, "\\'");

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Sắc nét

6.4784 Huy hiệu vàng44 Huy hiệu bạc39 Huy hiệu đồng4 gold badges44 silver badges39 bronze badges

Đã trả lời ngày 26 tháng 2 năm 2013 lúc 11:20Feb 26, 2013 at 11:20

Nikita Tkachenkonikita TkachenkoNikita Tkachenko

2.0671 Huy hiệu vàng15 Huy hiệu bạc22 Huy hiệu đồng1 gold badge15 silver badges22 bronze badges

5

Tốt nhất để sử dụng

strInputString = strInputString.replace(...
1 để bao gồm tất cả các cơ sở của bạn, như dấu gạch chéo ngược và các nhân vật đặc biệt khác. Đây là chức năng ban đầu của bạn với vị trí thay vì sửa đổi
strInputString = strInputString.replace(...
2:

function testEscape() {
    var strResult = "";
    var strInputString = "fsdsd'4565sd";

    var strTest = "strResult = " + JSON.stringify(strInputString) + ";";
    eval(strTest);
    alert(strResult);
}

(Bằng cách này,

strInputString = strInputString.replace(...
2 của bạn có thể là một cái gì đó như
strInputString = strInputString.replace(...
4 và nó vẫn sẽ hoạt động tốt.)

Lưu ý rằng nó thêm các trích dẫn kép xung quanh, vì vậy bạn không cần phải bao gồm các trích dẫn duy nhất nữa.

Đã trả lời ngày 21 tháng 12 năm 2018 lúc 7:51Dec 21, 2018 at 7:51

5

Tôi đồng ý rằng

strInputString = strInputString.replace(...
5 này hoạt động rất tốt, nhưng vì tôi đã sử dụng phần mã này trong PHP với khung prado (bạn có thể đăng ký tập lệnh JS trong một lớp PHP), tôi cần mẫu này làm việc bên trong trích dẫn đôi.

Giải pháp làm việc cho tôi là bạn cần đặt ba

strInputString = strInputString.replace(...
6 và thoát khỏi các trích dẫn kép.
strInputString = strInputString.replace(...
7

Tôi trả lời câu hỏi đó vì tôi gặp khó khăn khi tìm thấy ba

strInputString = strInputString.replace(...
6 là công việc xung quanh.

Đã trả lời ngày 11 tháng 3 năm 2016 lúc 22:33Mar 11, 2016 at 22:33

Chỉ điều này làm việc cho tôi:

searchKeyword.replace(/'/g, "\\\'");//searchKeyword contains "d'av"

Vì vậy, biến kết quả sẽ chứa "d \ 'av".

Tôi không biết tại sao với Regex không hoạt động, có thể vì khung JS mà tôi đang sử dụng (Backbone.js)

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Đã trả lời ngày 3 tháng 7 năm 2019 lúc 14:50Jul 3, 2019 at 14:50

Điều đó làm việc cho tôi.

string address=senderAddress.Replace("'", "\\'");

Đã trả lời ngày 18 tháng 11 năm 2020 lúc 9:56Nov 18, 2020 at 9:56

Có hai cách để thoát khỏi trích dẫn duy nhất trong JavaScript.

1- Sử dụng các quote kép hoặc backticks để gửi lại chuỗi.

Ví dụ: "FSDSD'4565SD" hoặc `fsdsd'4565sd`.

2- Sử dụng Backslash trước bất kỳ ký tự đặc biệt nào, trong trường hợp của chúng tôi là trích dẫn đơn lẻ

Ví dụ: StrinputString = StrinputString.Repace ( / ' / g, "\\'");

Lưu ý: Sử dụng dấu gạch chéo ngược đôi.

Cả hai phương pháp đều làm việc cho tôi.

Đã trả lời ngày 14 tháng 9 năm 2020 lúc 9:04Sep 14, 2020 at 9:04

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

1

var str = "fsdsd'4565sd"; str.replace (/'/g, "'")

Điều này làm việc cho tôi. Vui lòng thử điều này

Hướng dẫn javascript replace single quote with backslash single quote - javascript thay thế một câu trích dẫn đơn bằng dấu gạch chéo ngược đơn

Đã trả lời ngày 12 tháng 11 năm 2020 lúc 11:13Nov 12, 2020 at 11:13

HarihariHari

Phù hiệu bằng đồng 3166 bronze badges

Biểu thức chính quy trong mã sau đây cũng xử lý khả năng thoát khỏi các trích dẫn đơn trong chuỗi - nó sẽ chỉ dự phòng dấu gạch chéo ngược cho các trích dẫn đơn chưa được thoát:

strInputString = strInputString.replace(/(?<!\\)'/g, "\\'");

Bản demo: https://regex101.com/r/l1lf7j/1


Khả năng tương thích

Regex ở trên sử dụng Lookbehind tiêu cực, được hỗ trợ rộng rãi nhưng nếu sử dụng phiên bản JavaScript cũ hơn, thay vào đó, Clunkier Regex (sử dụng bản sao lại nhóm bắt giữ) cũng sẽ thực hiện công việc:

strInputString = strInputString.replace(/(^|[^\\])'/g, "$1\\'");

Bản demo: https://regex101.com/r/9niyyw/1

Đã trả lời ngày 30 tháng 10 lúc 8:14Oct 30 at 8:14

Chamberssteve ChamberssteveSteve Chambers

Phù hiệu vàng 35K20 Huy hiệu bạc196 Huy hiệu Đồng20 gold badges150 silver badges196 bronze badges

strInputString = strInputString.replace(/'/g, "''");

Đã trả lời ngày 17 tháng 2 năm 2016 lúc 0:42Feb 17, 2016 at 0:42

Karthik Gkarthik gKarthik G

151 Huy hiệu bạc5 Huy hiệu đồng1 silver badge5 bronze badges