2016-08-11 2 views
1

電子メールアドレスを確認するためにregexpを書こうとしていますが、文字、数字、アンダースコア、ピリオド、ハイフンを '@'記号の前に付けて同じアドレスを受け入れる必要があります。このアドレスの '@'記号は1つだけです。セット内の一文字に一致する

現在のところ、私はこれに固執しました:/^[\w\.\[email protected]]*$/i。私はそれが1つだけ '@'記号を受け入れるようにすることはできません:{1}セット内で動作しないし、私が見つけた他の方法もうまくいきませんでした。では、セット内の1文字をマッチさせる方法は何ですか?

+1

あなたは次のように使うことができます: '/^[\ w .-] + @ [\ w .-] + $ /' – anubhava

+0

@anubhava – snowfinch27

答えて

1

あなたは文字クラス内の数量詞を使用することはできません(すなわち[@{1}]一致するか@{1または})。この式は、少なくとも3文字が必要になります

/^[\w.-][email protected][\w.-]+$/ 

注:何が必要2つの部分の間、あなたが唯一の発生に制限したい文字を取り出す2つの部分に分割し、あなたの文字クラスを「アンロール」ことですメールアドレスは3文字以下にすることはできません。

また、\wは大文字と小文字の両方に一致するため、/iの大文字と小文字を区別しない修飾語は冗長です。

regex demoを参照してください。