2016-11-02 3 views
0

Я борюсь с регулярным выражением. Я нашел некоторое разделенное решение для своей проблемы, но не работает вместе. Теперь я даже не уверен, что это вообще возможно.(Javascript) Специальные символы регулярных выражений, но исключая

У меня есть строка, как:

"ÿÿÿÿÿÿBla bla äöüß!ÿÿÿÿÿ\nÿÿÿстрокаÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ\u001f\u0001\u0001"

Я хочу, чтобы заменить все символы

  • между 0x00 и 0x1F (до места, не pritable)
  • и 0xFF ("ÿ")
  • , но не 0x0A и 0x0D. (разрывы строк)

У меня есть оба случая отделено:

// 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

Try '/ [\ x00- \ x09 \ x0B \ x0C \ x0E- \ x1f \ XFF] +/G' –

ответ

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);

+0

Ok, это отличное решение. Так просто. Просто несколько диапазонов. Для меня это неловко. Эта ночь была слишком длинной. Спасибо друг. :) – Dominik

+0

Это обходное решение. Но как исключить конкретный характер. Этот вопрос не закрыт. Было бы интересно узнать это. – Dominik

+1

Вам это не нужно, но вы можете - '/ (?: (?! [\ X0A \ x0D]) [\ x00- \ x1F \ xFF]) +/g' –

Смежные вопросы