2016-11-02 9 views
0

私は正規表現で苦労しています。 私の問題の解決策を見つけましたが、一緒には使えません。 これはまったく可能かどうか私はまだ分かりません。(Javascript)正規表現固有の文字(除外)

私のような文字列を持っている:私は(スペース、非pritableまで)0x00から0x1Fの間のすべての文字

  • を置き換えたい

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

  • から0xFF( "Y" )
  • ただし、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、 ''); '' '

わかりません。 私は建設的な助けに本当に感謝しています。文字列の

募集結果:文字列がUTF-8と互換性がなければならない

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

。 私は正規表現以外の文字を削除するための正規表現関数があることを知っています。 しかし、これはウムラウト(ööü)、キリル文字なども削除します。

+0

[\ x00- \ x09の\ X0B \ x0C \ x0E- \ X1F \ XFF] [OK]を+/G' –

答えて

1

あなたは、ポイントはあなたが\x0A(改行)と\x0D(キャリッジリターン)を除外するために、文字クラス内の範囲を再編成する必要があるということです

/[\x00-\x09\x0B\x0C\x0E-\x1F\xFF]+/g 
     ^^^^^^^^^^^^^^^^ 

使用することができます。以下

参照のデモ:

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

/'試してみてください、これはあります素晴らしい解決策です。とても簡単。ちょうど複数の範囲。それは私にとっては恥ずかしいものです。この夜は長すぎた。ありがとう。 :) – Dominik

+0

これは回避策です。しかし、特定の文字を排除する方法。この質問は終了しません。それを知ることは面白いだろう。 – Dominik

+1

これは必要ではありませんが、 '/(?:(?![\ x0A \ x0D])[\ x00- \ x1F \ xFF])+/g' –

関連する問題