2011-01-19 2 views
0

今私が持っている:特定の場所での正規表現の特別な文字

​​

[email protected]

私はtestが開始または特殊文字で終わることができないようにしたい見つけました。

は例えば、私はそれを見つけたい:

ではなく:

+0

正規表現を使用して電子メールアドレスを照合するのは悪い考えです。あなたはそれを正確に行うことはできませんし、「近づいてくる」とは有効なメールを拒否します。 (私は '!@ mydomain.net'のメールを使用していますが、驚くほど多くのサイトがそれを拒否していますが、それは[RFC 2822有効]です(http://www.faqs.org/rfcs/rfc2822)。 html)。)あなたがそうするように主張するなら、すでにこのトピックを深く読んだ[他人の作品](http://www.regular-expressions.info/email.html)を読んでください。 – Phrogz

+3

あなたはこれまでに何を試しましたか?実際に正規表現を修正したり学んだりすることなく、「これにマッチする正規表現がほしい」と言っているような気がします。すべてのあなたの質問は、 "私はこの正規表現を持っていて、これにマッチさせて、それをどのように変更するか教えてください"という形をしています。チュートリアル(http://www.regular-expressions.info/など)を読んで、あなたが盲目的にここに来る前に、あなたが望むことをするために正規表現を修正してみてください! – CanSpice

+0

「テストは特殊文字で開始または終了できないようにしたい」と「test- @ foo」では一致しません - 特別なcharで始まらず、終了しませんそのようなものは... – Maxym

答えて

0

あなたは、例えば、^を使用して、特定の文字が含まれていない文字クラスを定義することができます[^a]は、離れてと一致し、aから一致します。

私は前の@と一致する正規表現を3つのセクションに分割します。 1つは先頭の文字に一致し、1つは中央に一致し、もう1つは最後の文字に一致します。あなたはまた、単一の文字を持つだけの@前の単語の特別な場合を処理する必要があります。

+0

私はregexに新しいので、これを行う方法がわかりません。 – bjacobs

+1

@bjacobs:非常に複雑な正規表現をハックしようとするのではなく、簡単な正規表現を書く方法を学び、そこから必要な正規表現を構築することをお勧めします。 –

0

これは、ホイールを再現しなければならない領域ではありません。

あなたが本当にやりたいことはわかりません。 [email protected]と平野の古いpostmasterのようなアドレスは、両方とも配信可能ですが、あなたが望むことはほとんどありません。

メールアドレスを検証する合理的な方法は、そのアドレスにメールを送信し、相手が正しい人であることを示す自動化可能でない返信を返すことです。しかしこれはリアルタイムではできません。つまり、あなたができることは、タイプミスを除外しようと2回タイプすることです。それはあまり役に立ちません。だからこそWeb上で何かを申し込むには、常に交渉されたハンドシェイクが必要です。

ただし、RFC 5322に準拠したアドレスを検証する必要がある場合は、this patternを使用してください。

RFCに準拠しているかどうかのテストでは、と一致させるべきではないことを理解してください。メールアドレス - これはまったく別のものです。

関連する問題