私は正規表現を使用して基本的な文字列の置換を試みていますが、私が見つけた答えは役に立たないようです-彼らはほとんどまたはまったく説明なしで各人の固有の要件に直接答えています。
現在、str = str.replace(/[^a-z0-9+]/g, '');
を使用しています。しかし、私がやりたいのは、すべての英数字(a〜zおよび0〜9)と「-」文字を許可することです。
これに答えて、式を連結する方法を説明してください。
これは動作するはずです:
str = str.replace(/[^a-z0-9-]/g, '');
間のすべてがあなたが探しているものを示します
/
はパターンを区切るためにここにあるので、開始するものと終了するものがあります[]
は、特定の1文字で探しているパターンを示します^
は、後続の文字に対応しないすべての文字が必要であることを示しますa-z
は、含まれる「a」と「z」の間の任意の文字に一致します0-9
は、含まれる「0」から「9」までの任意の数字と一致します(任意の数字を意味します)-
'-'文字g
は、パターンに一致する最初の文字で正規表現を停止せず、文字列全体で続行することを示す特別なパラメーターです。次に、式は前後の/
で区切られます。したがって、ここでは、「文字ではないすべての文字、数字、または「-」が文字列から削除される」と言います。
単に+
から-
:
str = str.replace(/[^a-z0-9-]/g, "");
次のように読むことができます。
[^ ]
:セットのNOTと一致[^a-z0-9-]
:一致しない場合a-z
、0-9
または-
/ /g
:グローバルマッチを行います詳細情報:
あなたのキャラクタークラス(角括弧内の部分)は、0-9とa-zと+以外をマッチさせたいと言っています。一致させるa-zまたは0-9の数については明確ではありませんが、+は、少なくとも1つの英数字の文字列を置換することを意味すると想定しています。代わりに読む必要があります:
str = str.replace(/[^-a-z0-9]+/g, "");
また、大文字と小文字を一致させる必要がある場合は、次を使用する必要があります。
str = str.replace(/[^-a-zA-Z0-9]+/g, "");