簡體   English   中英

如何允許用戶在Javascript中輸入轉義的字符

[英]How to allow user to input escaped chars in Javascript

這里簡單一點。

我有一個HTML <textarea> ,我想讓用戶輸入轉義序列。 即:

Hello\nworld\x21

我希望我的腳本“解釋” \\n\\x21得到:

Hello
world!

謝謝

編輯:這樣做的目的是允許用戶在html頁面中輸入熱敏打印機的代碼。 打印機需要特殊的字符。 我想取這個字符串,“解釋”特殊代碼並將其發送到打印機。 目前,打印機按原樣打印字符串。

我能想到的唯一方法是不使用 替換行,而是使用 eval()函數。 例如,您可以使用以下內容:

 
 
 
  
  function useEscapes(s) { return eval('("' + s.replace(/([^\\\\]|^)(?=(\\\\\\\\)*["\\n])/g, '$1\\\\').replace(/\\n/g, 'n') + '")'); }
 
  

replace是為了確保傳入 eval()函數是安全的。

編輯9/28/2016:

有一種更好的方法不是安全風險。 因為字符串文字是有效的JSON,所以可以將其包裝在引號中並使用JSON.parse 您還可以在其中轉義引號,以便用戶不會出現無法解釋的語法錯誤。 如果攻擊者試圖將代碼放在字符串之外,則只會拋出語法錯誤。

function useEscapes(s) {
    return JSON.parse('"' + s
        .replace(/((^|[^\\])(\\\\)*)"/g, '$1\\\\"') // optional - prevents syntax errors
        + '"');
}

暫無
暫無

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

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