我正在与正则表达式斗争。 我为我的问题找到了一些独立的解决方案,但不能一起工作。 现在我甚至不确定这是否可行。
我有一个字符串:
"ÿÿÿÿÿÿBla bla äöüß!ÿÿÿÿÿ\nÿÿÿстрокаÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ\u001f\u0001\u0001"
我要替换所有字符
我将两个案件分开:
// Works great but removes linebreaks.
str = str.replace(/[\x00-\x1F\xFF]+/g, '');
我想排除换行符。
//This only extract the line breaks.
str = str.replace(/[^\x0A]/g, '');
但我希望这个/合并。像那样(伪)
'''//正则表达式不正确。但正确的逻辑。 str = str.replace(/ [\ x00- \ x1F \ xFF ^ \ x0A ^ \ x0D] + / g,''); '''
我不知道。 我真的很感激你的建设性帮助。
字符串的结果:
"Bla bla äöüß!\nстрокаQ"
该字符串必须与UTF-8兼容。 我知道有一个正则表达式函数可以删除不可重复的字符。 但这也删除了变音符号(äöü),西里尔字母等。
答案 0 :(得分:1)
您可以使用
/[\x00-\x09\x0B\x0C\x0E-\x1F\xFF]+/g
^^^^^^^^^^^^^^^^
关键是您需要重新组织字符类中的范围,以排除\x0A
(换行符)和\x0D
(回车)。
见下面的演示:
var s = "ÿÿÿÿÿÿBla bla äöüß!ÿÿÿÿÿ\nÿÿÿстрокаÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ\u001f\u0001\u0001";
console.log(s);
var res = s.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\xFF]+/g,'');
console.log(res);