[英]Using a RegEx to replace the single backslash with a double blackslash in a string
[英]Replace backslash in a string using regex
這為什么起作用:
'ye+low'.replace(/\+/g, 'l')
// > yellow
但這不起作用:
'ye\low'.replace(/\\/g, 'l')
// > yelow
??
我需要用一個東西替換一個反斜線,但是我似乎無法實現。
注意:我無法更改字符串,因為它來自變量。
編輯 :我了解\\
是JavaScript中的轉義字符。 根據我的理解,這很好,我在這方面也閱讀了很多其他的答案。 我的問題是:“好的,我知道了,但還是:如何更換ye\\low
是yellow
?使用JavaScript” 我知道正則表達式可能由於反斜杠的解釋而不是可行的方法,但是我敢肯定有某種方法可以某種方式獲得所需的輸出。
您的代碼顯示\\l
,它不是2個字符,而是一個字符。 這是一個無效的轉義碼,只能l
。 如果要在代碼中表示反斜杠,則必須像這樣'ye\\\\low'
來轉義反斜杠。 這看起來像兩個反斜杠,但這是代表一個反斜杠的代碼。
這是5個字符的字符串: 'ye\\low'
。
console.log('ye\low')
// "yelow"
'ye\low'.length === 5
這兩個代碼塊是相同的:
'ye\low'.replace(/\\/g, 'l')
'yelow'.replace(/\\/g, 'l')
字符\\l
無效,並且被轉換為沒有斜杠的l
。
如果您的字符串中包含斜杠,則必須像這樣轉義反斜杠: 'yel\\\\low'
const yelloWith_ONE_Backslash = 'ye\\low'
console.log(yelloWith_ONE_Backslash)
// "ye\low"
'ye\\low'.length === 6
// true
console.log('yelow')
// "yelow"
console.log('ye\low')
// "yelow"
console.log('ye\\low')
// "ye\low"
console.log('ye\\\\low')
// "ye\\low"
因此,您可以這樣做:
'ye\\\\low'.replace(/\\\\/g, 'l')
var input = prompt('Try to type `ye\\\\low`') var replaced = input.replace(/\\\\/g, 'l') alert(replaced)
我發現這對我有用:
// This allows backslash to be ineffective, meaning ye\low will remain as a string with 6 characters INCLUDING the \
var value = String.raw`ye\low`;
console.log( value.replace('/\\/g', 'l') )
輸出是
黃色
請謹慎使用,因為尚未被所有瀏覽器廣泛支持。 在此處查看更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/raw
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.