2017-05-24 5 views
1

特定の連続する文字を削除するには正規表現が必要です。JSのRegExpで特定の型の連続する文字を削除する

たとえば、私は使用することができます

var filtered = oldString.replace(/[^[\w]\s]|(.)(?=\1)/gi, ""); 

私は任意の連続する文字を取り除く必要がある場合。

そして私は使用できます。

var filtered = oldString.replace(/[^[\w]\s]|(,|;|\s)(?=\1)/gi, ""); 

コンマ、セミコロン、および空白文字を削除する必要がある場合は、

しかし、私が正確に必要とするのは;,のような文字列を;のようにすることです。

,,,,, ;のような文字列は、単一のコンマ,のように見えます。

だから、私はある種の連続した文字を取り除く必要があります。

どうすればいいですか?

+0

に変更されますどのような[; \ s]は '使用についての代わりに' '\ 1 'の? – horcrux

+0

'.replace(/(\ W)\ W */g、 '$ 1')' –

+0

を試してください。特に問題がある場合は、入力文字列と期待される出力を共有してください。今、質問はかなり一般的に聞こえるので、私の答えは役に立たないかもしれません。 –

答えて

0

同じパターンに一致する文字のチャンクを一致させたいが、最初に一致した文字だけを保持したいと思うようだ。非単語の文字(および置換パターンで$1後方参照が復元できるように、グループ1に取り込む -

  • (\W)を:regex demo

    パターンが一致します参照してください

    .replace(/(\W)\W*/g, '$1') 
    

    を使用しますこのチャット)

  • \W* - 0+文字以外の文字(それらは文字列から削除されます)

これは一般的なアプローチであり、ほとんどの場合、パターンをさらに調整する必要があることに注意してください。

0

あなたの質問に基づいて、私は最初に発生したものと連続して発生する定義済みの文字のセットを置き換えたいと考えています。

([;,])[;,]*(?:[;,\h]*[;,]+)? 
  • マッチ,のいずれか、;と横のスペース\hすなわち単一のスペースまたはタブ
  • 一致する最初の試合すなわちをキャプチャするキャプチャグループを使用し
  • の間で発生するだけのスペース:あなたはこれを行うことができます ([;,])
  • (?:[;,\h]*[;,]+)?は、スペースを挟む非捕捉性のグループである。

これは私が最初のもので,;とスペース\hの組み合わせを置き換えます$1

と交換してください。電子

  • ,,,,,,,,;,
  • ;;;;; , , , , ;, ;, ;に変更されます;

Regex101 Demo

関連する問題