亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

變量中的JavaScript反斜杠(\)導致錯誤

變量中的JavaScript反斜杠(\)導致錯誤

冉冉說 2019-08-05 15:31:18
變量中的JavaScript反斜杠(\)導致錯誤在Javascript中,當我在一些變量中添加反斜杠時:var ttt = "aa ///\\\";var ttt = "aa ///\"; Javscript顯示錯誤。如果我嘗試限制用戶輸入此字符,我也會收到錯誤:(("aaa ///\\\").indexOf('"') != -1)限制用戶輸入的反斜杠不是一個好策略,因為你必須向用戶顯示惱人的消息。為什么我用反斜杠得到錯誤?
查看完整描述

3 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

反斜杠(\)是Javascript中的轉義字符(以及許多其他類C語言)。這意味著當Javascript遇到反斜杠時,它會嘗試轉義以下字符。例如,\n是換行符(而不是反斜杠后跟字母n)。

為了輸出一個反斜杠,你需要逃脫。這意味著\\將輸出一個反斜杠(\\\\并將輸出兩個,依此類推)。原因"aa ///\"不起作用是因為反斜杠轉義"(將打印文字引號),因此你的字符串沒有正確終止。同樣,"aa ///\\\"也行不通,因為最后一個反斜杠再次逃脫了引用。

請記住,對于要輸出的每個反斜杠,您需要提供兩個 Javascript 。


查看完整回答
反對 回復 2019-08-05
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

您可能想嘗試以下操作,這或多或少是逃避用戶輸入的標準方法:

function stringEscape(s) {
    return s ? s.replace(/\\/g,'\\\\').replace(/\n/g,'\\n').replace(/\t/g,'\\t').replace(/\v/g,'\\v').replace(/'/g,"\\'").replace(/"/g,'\\"').replace(/[\x00-\x1F\x80-\x9F]/g,hex) : s;
    function hex(c) { var v = '0'+c.charCodeAt(0).toString(16); return '\\x'+v.substr(v.length-2); }}

這將使用轉義反斜杠替換所有反斜杠,然后將其他不可打印的字符轉義為其轉義形式。它還可以轉義單引號和雙引號,因此即使在eval中也可以將輸出用作字符串構造函數(考慮到您正在使用用戶輸入,這本身就是一個壞主意)。但無論如何,它應該完成你想要的工作。


查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 1484 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號