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

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

為什么正則表達式構造函數需要雙重轉義?

為什么正則表達式構造函數需要雙重轉義?

為什么正則表達式構造函數需要雙重轉義?在下面的正則表達式中,\s表示空格字符。我想象正則表達式解析器,正在通過字符串看到\并知道下一個字符是特殊的。但事實并非如此,因為需要雙重逃脫。為什么是這樣?var res = new RegExp('(\\s|^)' + foo).test(moo);是否有一個具體的例子說明單個逃避如何被誤解為其他東西?
查看完整描述

4 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

您正在通過將字符串傳遞給RegExp構造函數來構造正則表達式。

您需要轉義它,\以便您的字符串文字可以在將其轉換為正則表達式之前將其表示為數據。


查看完整回答
反對 回復 2019-05-25
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

在那里你要創建一個字符串的代碼里面,反斜杠是一個JavaScript轉義字符第一,這意味著像轉義序列\t\n,\",等將被翻譯成其JavaScript對口(制表符,換行符,報價等),和這將成為字符串的一部分。雙反斜杠表示實際字符串本身中的單個反斜杠,因此如果您想在字符串中使用反斜杠,則首先將其轉義。

所以當你通過說出你生成一個字符串時var someString = '(\\s|^)',你真正在做的是創建一個帶有值的實際字符串(\s|^)。


查看完整回答
反對 回復 2019-05-25
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

\在字符串中用于轉義特殊字符。如果你想在字符串中使用反斜杠(例如對于\ in \ s),你必須通過反斜杠轉義它。所以\成為\\。

編輯:甚至不得不在這里做,因為\\在我的回答中轉向\。


查看完整回答
反對 回復 2019-05-25
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

正則表達式需要一個字符串表示\s,在JavaScript中可以使用文字生成"\\s"。

這是一個現實的例子來說明為什么"\s"還不夠:


alert("One backslash:          \s\nDouble backslashes: \\s");


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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