1. ホーム
  2. javascript

[解決済み] 英数字以外の文字、改行、複数の空白をすべて1つの空白に置き換えます。

2022-02-07 19:37:50

質問事項

を置き換えるための適切な正規表現ソリューションを探しています。

  • 英数字以外のすべての文字
  • すべての改行
  • 複数ある空白のすべて

スペース1つで


自宅でプレイされる方へ( 以下は動作します。 )

text.replace(/[^a-z0-9]/gmi, " ").replace(/\s+/g, " ");

私の考え方は レジェックス は、おそらく1つのステートメントでこれを達成するのに十分強力です。必要なコンポーネントは以下の通りです。

  • [^a-z0-9] - 英数字以外を削除する場合
  • \s+ - 任意のスペースの集合にマッチ
  • \r?\n|\r - すべての改行と一致
  • /gmi - グローバル、複数行、大文字・小文字を区別しない

しかし、正規表現のスタイルを正しく設定することができないようです ( 以下のようにするとうまくいきません。 )

text.replace(/[^a-z0-9]|\s+|\r?\n|\r/gmi, " ");


入力

234&^%,Me,2 2013 1080p x264 5 1 BluRay
S01(*&asd 05
S1E5
1x05
1x5


希望する出力

234 Me 2 2013 1080p x264 5 1 BluRay S01 asd 05 S1E5 1x05 1x5

解決方法は?

注意することは \W はアンダースコアが残ります。 . に相当する短い [^a-zA-Z0-9] は、次のようになります。 [\W_]

text.replace(/[\W_]+/g," ");

\W の否定です。 速記 \w について [A-Za-z0-9_] 単語文字(アンダースコアを含む)

regex101.com での例