1

次のコードを試しましたが、一致しません。

re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b").

正規表現私はここに来ましたhttp://www.regular-expressions.info/email.html

編集済み:次は機能しません

re:run("345345", "\b[0-9]+\b").

そのメールが一致するときに文字列でメールを受け取った場合

re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$").
4

2 に答える 2

5

私はこの質問に答えるのをためらっています。なぜなら、それは間違った仮定に基づいていると思うからです。つまり、電子メール アドレスが有効かどうかを正規表現で判断できるということです。詳細については、この質問を参照してください。一見すると、あなたの質問の正規表現は.museum.рфのトップレベル ドメインを受け入れていないことに注意してください。

つまり、バックスラッシュをエスケープする必要があります。文字列にバックスラッシュを含めたいのですが、Erlang では文字列内でバックスラッシュを使用してさまざまな文字をエスケープするため、リテラルのバックスラッシュは\\. これを試して:

3> re:run("qw@qc.com", "\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b").
{match,[{0,9}]}

またはさらに良いことに、これ:

8> re:run("qw@qc.com", "\\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\b").
{match,[{0,9}]}

これは HTML 5 標準で使用されている正規表現であり、 and\\bの代わりに使用するように変更されています。^$

于 2012-07-30T11:33:04.380 に答える
0

大文字と小文字を区別しない一致が必要なようですか?

現在[A-Z0-9._%+-](たとえば) 大文字 (および数字など) のみに一致します。

1 つの解決策は、 を指定すること[A-Za-z]です。もう 1 つの解決策は、一致する前にメール アドレスを大文字に変換することです。

于 2012-07-30T09:46:05.503 に答える