簡體   English   中英

Javascript正則表達式將反斜杠添加到字符串的每個字符中

[英]Javascript regex to add to every character of a string a backslash

因此,正如標題所述,無論字符串是否包含特殊字符,我都想在字符串的每個字符中添加反斜杠。 該字符串不應被視為“安全”

eg: 
let str = 'dj%^3&something';
str = str.replace(x, y);
// str = '\d\j\%\^\3\&\s\o\m\e\t\h\i\n\g'

您可以使用(.)捕獲字符串中的每個字符,並使用\\\\$1作為替換,我不是專家,但是基本上\\\\將呈現為\\$1將呈現為任何(.)捕獲。

HIH

編輯

請參閱WiktorStribiżew的注釋 ,以獲取需要較少編碼的替代方法。 更改如下:

str = str.replace(/(.)/g, '\\\\$1'); str = str.replace(/./g, '\\\\$&');

另外,作為正則參考,我強烈建議您訪問regexr.com時使用正則表達式,這對我有很大幫助

 let str = 'dj%^3&something'; str = str.replace(/(.)/g, '\\\\$1'); console.log(str); 

如果只想安全地顯示字符串,則應該執行以下操作:

let str = 'dj%^3&something';
let node = document.createTextNode(str);
let dest = document.querySelector('.whatever');
dest.appendChild(node);

然后,可以確保將其視為文本,並且將無法執行腳本或其他任何操作。

例如: https//jsfiddle.net/s6udj03L/1/

您可以將字符串拆分為一個數組,在該數組的每個元素中添加一個\\ ,然后將該數組連接回所需的字符串。

 var str = 'dj%^3&something'; var split = str.split(""); // split string into array for (var i = 0; i < split.length; i++) { split[i] = '\\\\' + split[i]; // add backslash to each element in array } var joint = split.join('') // joint array to string console.log(joint); 

如果你不關心創建一個新的string ,並不真的要使用正則表達式,為什么不遍歷現有和地方\\每個前char 請注意,您必須輸入\\\\以逃避第一個\\

為了安全起見,您必須以某種方式對其進行編碼。 您可以像下面的encode()函數中那樣替換典型的“非安全”字符。 注意如何將& get替換為&amp;

 let str = 'dj%^3&something'; let out = ""; for(var i = 0; i < str.length; i++) { out += ("\\\\" + str[i]); } console.log(out); console.log(encode(out)); function encode(string) { return String(string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM