为什么会这样:
'ye+low'.replace(/\+/g, 'l')
// > yellow
但这不起作用:
'ye\low'.replace(/\\/g, 'l')
// > yelow
...
我需要用一些东西替换一个反斜杠,但我似乎无法实现它。
注意:我可以在变量中更改字符串。
编辑:我了解\
是javascript中的转义字符。这对我的理解很好,我在这方面阅读了很多其他的答案。我的问题是:"我知道,但仍然:我如何使用javascript替换ye\low
为yellow
?"我理解正则表达式可能不是因为它对反斜杠的解释,但我打赌有一些方法可以获得所需的输出。
答案 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