如何在javascript中替换一行中的一个或两个退格以及它们前面的字符?
我有这样的代码:如何在javascript中替换一行中的一个或两个退格以及它们前面的字符?,javascript,regex,replace,Javascript,Regex,Replace,我有这样的代码: string.replace(/(.|\r\n)\x08/g, ''); 这将替换退格和它前面的一个字符,但它不适用于一行中有多个退格的情况,如'foo\b\b'。如何删除退格之前的字符以获得字符串'f''+'表示“1或更多”,请尝试 string.replace(/(.|\r\n)+\x08/g',)'+'表示“1或更多”,请尝试 string.replace(/(.|\r\n)+\x08/g',)我想到了这个: 'foo\b\b'.replace(/((?:[^\x08]
string.replace(/(.|\r\n)\x08/g, '');
这将替换退格和它前面的一个字符,但它不适用于一行中有多个退格的情况,如
'foo\b\b'
。如何删除退格之前的字符以获得字符串'f'
'+'表示“1或更多”,请尝试
string.replace(/(.|\r\n)+\x08/g',)'+'表示“1或更多”,请尝试 string.replace(/(.|\r\n)+\x08/g',)我想到了这个:
'foo\b\b'.replace(/((?:[^\x08]|\r\n)+)(\x08+)/g, function(_, chars, backspaces) {
return chars.replace(new RegExp('(.|\r\n){' + backspaces.length + '}$'), '');
});
我想到了这个:
'foo\b\b'.replace(/((?:[^\x08]|\r\n)+)(\x08+)/g, function(_, chars, backspaces) {
return chars.replace(new RegExp('(.|\r\n){' + backspaces.length + '}$'), '');
});
您可以尝试以下方法:
str="abc\b\bdefg";
while(str.match(/\w\x08/)){
str=str.replace(/\w\x08/g,"");
}
它将继续删除“字符+空格”序列,而它们仍在字符串中 您可以尝试以下方法:
str="abc\b\bdefg";
while(str.match(/\w\x08/)){
str=str.replace(/\w\x08/g,"");
}
它将继续删除“字符+空格”序列,而它们仍在字符串中 如果只想删除字符串中的一个或两个0x08字符及其前面的字符,只需将正则表达式更改为 /(.|\r\n)\x08{1,2}/g 但是我想你要做的是每0x08删除1个字符你可以这样做 /((.|\r\n)\x08 |(.|\r\n){2}\x08{2})/g 两个人。如果你想做得更多,我想写一个函数,一个字符一个字符地遍历字符串,然后一次迭代地解析它会更快
函数删除反斜杠(str){
var结果=”;
for(str中的var i){
if(str.charCodeAt(i)==8)
{
结果=结果切片(0,-1);
}否则{
结果+=str.charAt(i);
}
}
返回结果;
}
var b=removeBackslashes('foo\b\basd');
控制台日志(b,b.长度)代码>如果只想删除字符串中的一个或两个0x08字符及其前面的字符,只需将正则表达式更改为
/(.|\r\n)\x08{1,2}/g
但是我想你要做的是每0x08删除1个字符你可以这样做
/((.|\r\n)\x08 |(.|\r\n){2}\x08{2})/g
两个人。如果你想做得更多,我想写一个函数,一个字符一个字符地遍历字符串,然后一次迭代地解析它会更快
函数删除反斜杠(str){
var结果=”;
for(str中的var i){
if(str.charCodeAt(i)==8)
{
结果=结果切片(0,-1);
}否则{
结果+=str.charAt(i);
}
}
返回结果;
}
var b=removeBackslashes('foo\b\basd');
控制台日志(b,b.长度)代码>这将替换字符串开头的所有内容。抱歉,加号的位置错误,字符串。替换(/(.|\r\n)\x08+/g',);这将把'foo\b\b'
替换为'fo'
而不是'f'
,我不明白。您需要像abc\b\bdefg->\b\bdefg这样的替换?我需要abc\b\bdefg->adefg
。这将替换字符串开头的所有内容。抱歉,加号的位置不对,字符串。替换(/(。\r\n)\x08+/g');这将把'foo\b\b'
替换为'fo'
而不是'f'
,我不明白。你需要像abc\b\bdefg->\b\bdefg这样的替换吗?我需要abc\b\bdefg->adefg
。如果你在退格之前替换一个字符,那么如何从foo\b\b
中得到f
?这意味着你想替换尽可能多的字符,不是吗?@cezar是的,你是对的。foo\bo\b\b
的预期结果是什么?好的,我相信我的答案应该满足你的要求。如果没有,请告诉我。如果在退格之前替换一个字符,那么如何从foo\b\b
中找到f
?这意味着你想替换尽可能多的字符,不是吗?@cezar是的,你是对的。foo\bo\b\b
的预期结果是什么?好的,我相信我的答案应该满足你的要求。如果没有,请告诉我。我最终使用了这样的正则表达式/([^\x08]|\r\n)\x08/
,因为我需要匹配每个字符,而且\r\n
需要是单个字符。我最终使用了这样的正则表达式/([^\x08]|\r\n)\x08/
,因为我需要匹配每个字符,而且\r\n
需要是单个字符。