使用正則表達式文字反斜槓我非常新的正則表達式,它似乎\
用於元字符。我的問題是我要搜索這個字符串完全\"mediaType\":\"img\"
如何使在JS
現在我也想動態把一個變量在IMG。所以我希望它是這樣的
new RegExp(`\"mediaType\":\"${variable}\"`)
我該如何寫這使它工作?
使用正則表達式文字反斜槓我非常新的正則表達式,它似乎\
用於元字符。我的問題是我要搜索這個字符串完全\"mediaType\":\"img\"
如何使在JS
現在我也想動態把一個變量在IMG。所以我希望它是這樣的
new RegExp(`\"mediaType\":\"${variable}\"`)
我該如何寫這使它工作?
簡短的回答:
function escapeRegEx(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
var expression = new RegExp('\\\\"mediaType\\\\":\\\\"' + escapeRegEx(variable) + '\\\\"');
// or, using a template literal:
var expression = new RegExp(`\\\\"mediaType\\\\":\\\\"${escapeRegEx(variable)}\\\\"`);
龍答:
除了被用於元字符,反斜線在正則表達式可以用來逃跑,否則將有含義的字符(如*
,$
,括號和\
)。因此,在正則表達式中匹配反斜槓的方法是將另一個添加爲轉義字符:\\
。
考慮到這一點,你想結束了正則表達式是\\"mediaType\\":\\"img\\"
,如果你使用的是正則表達式文本,這將是它。不幸的是,它需要更多的參與,因爲你需要動態地創建一個表達式,你需要提供表達式作爲一個字符串,其中也需要反斜槓。這增加了第二層轉義,所以你需要再次將每個\
字符加倍,並且最終以new RegExp('\\\\"mediaType\\\\":\\\\"img\\\\"')
結束。
另一個複雜問題是您要的variable
內容被逐字匹配,不能解釋爲正則表達式。不幸的是,在JavaScript中沒有內置的自動轉義正則表達式的方法,因此您需要使用Is there a RegExp.escape function in Javascript?中的一個解決方案。我使用了接受答案的稍微修改版本,將其定義爲獨立函數,而不是將其添加到RegExp
對象。只要你逃離動態部分,確切的解決方案並不重要。
或者保留模板文字:''new RegExp('\\\\「mediaType \\\\」:\\\\「$ {escapeRegex(variable)} \\\\」'''''''以避免混淆''''''''' – Bergi
@Bergi這是一個很好的觀點,我習慣於串聯,但他們確實在問題中使用了模板文字,我將其作爲替代方案添加。 –
使用:'new Regex('\\\\「mediaType \\\\」:\\\\「img \\\''')' – anubhava
'\'是兩個javascript字符串中的轉義字符,表達。你必須逃避你的逃跑。此外,你不需要逃避'「'在正則表達式(如果這就是你想要做 – ctwheels
@ctwheels我需要什麼'」'因爲這是我在尋找 –