29

正規表現を使用して基本的な文字列置換を実行しようとしていますが、私が見つけた答えは役に立たないようです.ほとんどまたはまったく説明なしで、各人の固有の要件に直接答えています.

str = str.replace(/[^a-z0-9+]/g, '');現時点で使用しています。しかし、私がやりたいのは、すべての英数字 (az および 0-9) と「-」文字を許可することです。

これに答えて、式を連結する方法を説明してください。

4

4 に答える 4

63

これはうまくいくはずです:

str = str.replace(/[^a-z0-9-]/g, '');

の間のすべては、あなたが探しているものを示しています

  1. /パターンを区切るためにここにあるので、開始するものと終了するものがあります
  2. []特定の文字で探しているパターンを示します
  3. ^次のものに対応しないすべての文字が必要であることを示します
  4. a-z「a」から「z」までの任意の文字に一致
  5. 0-9含まれる「0」から「9」までの任意の数字に一致します (任意の数字を意味します)
  6. -キャラクター
  7. g末尾は、パターンに一致する最初の文字で正規表現を停止するのではなく、文字列全体で続行することを示す特別なパラメーターです。

/次に、式は前後で区切られます。したがって、ここでは、「文字、数字、または「-」ではないすべての文字が文字列から削除される」と言います。

于 2012-12-05T15:22:07.293 に答える
9

に変更+するだけ-です:

str = str.replace(/[^a-z0-9-]/g, "");

次のように読むことができます。

  1. [^ ]: セットから一致しない
  2. [^a-z0-9-]: そうでない場合に一致a-z0-9または-
  3. / /g: グローバルマッチを行う

詳しくは:

于 2012-12-05T15:20:36.733 に答える
1

文字クラス (角括弧内の部分) は、0-9 と az と + 以外のすべてに一致させたいと言っています。一致させたい az または 0-9 の数について明示的ではありませんが、 + は、少なくとも 1 つの英数字の文字列を置き換えたいことを意味すると思います。代わりに次のように読む必要があります。

str = str.replace(/[^-a-z0-9]+/g, "");

また、大文字と小文字を一致させる必要がある場合は、次を使用する必要があります。

str = str.replace(/[^-a-zA-Z0-9]+/g, "");
于 2012-12-05T15:21:42.283 に答える