[英]Escape regex within string
我有一大塊HTML / CSS / JS,它通過腳本標簽提供給第三方網站。 腳本標記有一個id,我用它來匹配並在正確的位置插入內容(沒有討厭的document.write
)。 但是,我遇到了一個非常奇怪的錯誤。 任何帶有正則表達式的行似乎從字符串中逃脫。 下面是一個問題行的示例(導致問題的一些問題):
+" // preceding code"
+" var remSpc = new RegExp('[\$%,]', 'ig');"
+" // following code"
正確轉義前面和后面的行,中間行的語法對我來說是正確的,但它會拋出“意外的輸入結束”錯誤,WebKit Inspector將其顯示為未轉義。 屏幕下方顯示未轉義的含義:
正則表達式的目的是從$ amount和百分比中刪除特殊字符(示例值可能是“$ 1,000”或“5.5%”。我嘗試不使用RegExp對象而只是執行`/ [\\ $%,] / ig和我得到完全相同的問題。
注意問題不在於這個正則表達式,特別是我有幾個正則表達式,每個包含一個的正則行為都表現相同。
字符串中的字符串應該雙重轉義:
//...
+" var remSpc = new RegExp('[\\\\$%,]', 'ig');"
第一個\\
是逃避第二個\\
。
編輯:根據Felix的評論將其更改為\\\\\\\\
。 我們需要這個,因為通常情況是:
/...\$.../
但是,正則表達式是一個字符串所以:
'...\\$...'
然后,該字符串位於另一個字符串中,用於評估:
"...'...\\\\$....'..."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.