使用正则表达式替换字符串中的反斜杠

时间:2017-10-09 21:40:53

标签: javascript

为什么会这样:

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

但这不起作用:

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

...

我需要用一些东西替换一个反斜杠,但我似乎无法实现它。

注意:我可以在变量中更改字符串。

编辑:我了解\是javascript中的转义字符。这对我的理解很好,我在这方面阅读了很多其他的答案。我的问题是:"我知道,但仍然:我如何使用javascript替换ye\lowyellow?"我理解正则表达式可能不是因为它对反斜杠的解释,但我打赌有一些方法可以获得所需的输出。

2 个答案:

答案 0 :(得分:2)

您的代码显示\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)




答案 1 :(得分:0)

我发现这对我有用:

// 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/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw