完全な電子メール検証について尋ねているわけではありません。
user-name
私はただ、メールアドレスに使用できる文字とその部分を知りたいだけですserver
。これは単純化しすぎかもしれませんし、メールアドレスは他の形式を取ることもできるかもしれませんが、私は気にしません。私が尋ねているのは、この単純な形式だけです: user-name@server
(例:[メールアドレス]) と、両方の部分で使用できる文字を指定します。
ベストアンサー1
見るRFC 5322: インターネットメッセージフォーマットそして、程度は低いが、RFC 5321: シンプルメール転送プロトコル。
RFC 822電子メール アドレスについても説明しますが、主にその構造について説明しています。
addr-spec = local-part "@" domain ; global address
local-part = word *("." word) ; uninterpreted
; case-preserved
domain = sub-domain *("." sub-domain)
sub-domain = domain-ref / domain-literal
domain-ref = atom ; symbolic reference
ここで、atom
およびはword
次のように定義される。
; ( Octal, Decimal.)
CHAR = <any ASCII character> ; ( 0-177, 0.-127.)
CTL = <any ASCII control ; ( 0- 37, 0.- 31.)
character and DEL> ; ( 177, 127.)
specials = "(" / ")" / "<" / ">" / "@" ; Must be in quoted-
/ "," / ";" / ":" / "\" / <"> ; string, to use
/ "." / "[" / "]" ; within a word.
atom = 1*<any CHAR except specials, SPACE and CTLs>
word = atom / quoted-string
そしていつものように、Wikipediaにはまともなメールアドレスに関する記事:
電子メール アドレスのローカル部分には、次のいずれかの ASCII 文字を使用できます。
- 大文字と小文字のラテン文字
A
toZ
とa
toz
;- 数字
0
を9
;- 特殊文字
!#$%&'*+-/=?^_`{|}~
;- ドット
.
。ただし、引用符で囲まない限り最初または最後の文字ではないこと、また引用符で囲まない限り連続して現れないこと(例:は[email protected]
許可されていないが、は"John..Doe"@example.com
許可されている)を条件とする。- スペースと
"(),:;<>@[\]
文字は制限付きで使用できます (以下の段落で説明するように、引用符で囲まれた文字列内でのみ使用できます。また、バックスラッシュまたは二重引用符の前にはバックスラッシュを付ける必要があります)。- ローカル部分の両端に括弧を付けてコメントを使用できます。たとえば、
john.smith(comment)@example.com
と はどちらも と同等です。(comment)[email protected]
[email protected]
ASCII文字に加えて、2012年現在国際的に上記の文字 U+007F
、UTF-8でエンコードされ、RFC 6532 仕様そして説明ウィキペディア2019 年現在、これらの標準はまだ提案済みとしてマークされていますが、徐々に展開されていることに注意してください。この仕様の変更により、基本的に、 や などの許可および制限されている特殊文字のルールに影響を与えることなく、国際文字が有効な英数字 (atext) として追加されまし!#
た@:
。
検証については、正規表現を使用してメールアドレスを検証する。
部品domain
が定義されています次のように:
インターネットプロトコルの標準規格(Request for Comments)では、コンポーネントホスト名ラベルには、ASCII文字
a
からz
(大文字と小文字を区別しない)、数字0
から9
、ハイフン(-
)のみを含めることができると規定されています。RFC952 の翻訳では、ラベルは数字やハイフンで始まってはならず、ハイフンで終わってはならないと規定されていました。しかし、その後の仕様(RFC 1123) では、ホスト名ラベルの先頭に数字を使用できます。その他の記号、句読点、空白は使用できません。