私は sth を間違っていますか、それとも JS replace に問題がありますか?
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
() とスペースも置き換えるにはどうすればよいですか?
私は sth を間違っていますか、それとも JS replace に問題がありますか?
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
() とスペースも置き換えるにはどうすればよいですか?
JavaScript の正規表現では、文字(
と)
文字は特別な意味を持ちます。文字どおりにリストしたい場合は\
、それらの前にバックスラッシュ ( ) を付けます。
(
、)
、 、およびスペース文字をすべて取り除くことが目標の場合は-
、文字クラスを代替 (たとえば、どちらか-または) on と組み合わせて使用できます\s
。これは、「ホワイト スペース」を表します。
document.write($("#a").val().replace(/[()\-]|\s/g,''));
()
(文字クラス内では必要がないため、 の前にバックスラッシュを付けませんでした。文字クラス-
内で-
は特別な意味があるため、 の前にバックスラッシュを付けました。)
あるいは、数字以外のものを取り除きたい場合は、次のように使用できます\D
。
document.write($("#a").val().replace(/\D/g,''));
\D
は「数字ではない」ことを意味します (これは大文字であることに注意してください\d
。小文字は反対の [任意の数字] です)。
正規表現に関する MDN ページの詳細情報。
文字クラスを使用する必要があります
/[-() ]/
"-"
ダッシュは通常範囲に使用されるため、最初の文字として使用するとあいまいさが解決されます (例: ) [a-zA-Z0-9]
。
document.write($("#a").val().replace(/[\s()-]/g,''));
これにより、すべての空白 (\s)、括弧、およびダッシュが削除されます
角かっこは、正規表現のキャプチャ グループを示します。/\(\)-/
シーケンス「()-」に一致させるには、それらをエスケープする必要があります ( )。それでも、文字クラス、つまり「(」、「)」または「-」に一致する式を使用したいと思います。空白の場合は\s
省略形を含めます:
value.replace(/[()-\s]/g, "");
これを使って
.replace(/\(|\)|-| /g,'')
括弧をエスケープする必要があります (つまり、\(
の代わりに(
)。\(
正規表現では、 、\)
、 '-' 、および(スペース)の 4 つの項目をリストする必要があり、4 つの文字列だけでなく、それらのいずれかを置き換えたい場合は、それらの間で OR を使用する必要があります。
|
セット内の任意の文字に一致させたいので、角かっこを使用して文字セットを作成する必要があります。
document.write($("#a").val().replace(/[()\- ]/g,''));
通常、括弧は正規表現では特別な意味を持つため、正規表現では無視され、ダッシュだけが残ります。通常、リテラルの括弧を取得するには、エスケープする必要があります\
(ただし、上記のように角括弧ブロックではエスケープしません)。
上記のダッシュは、通常、文字セットの範囲を示しているため、エスケープされています (例: [a-z]
.
非常に悪いかもしれませんが、非常に基本的なアプローチは、
document.write($("#a").val().replace(/(\()|(\))|-| |/g,''));
|
を意味OR
し、
\
予約済みシンボルをエスケープするために使用されます