簡體   English   中英

使用正則表達式替換字符串中的反斜杠

[英]Replace backslash in a string using regex

這為什么起作用:

'ye+low'.replace(/\+/g, 'l')
// > yellow

但這不起作用:

'ye\low'.replace(/\\/g, 'l')
// > yelow

??

我需要用一個東西替換一個反斜線,但是我似乎無法實現。

注意:我無法更改字符串,因為它來自變量。

編輯 :我了解\\是JavaScript中的轉義字符。 根據我的理解,這很好,我在這方面也閱讀了很多其他的答案。 我的問題是:“好的,我知道了,但還是:如何更換ye\\lowyellow ?使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM