タグ

ブックマーク / www.geminium.com (2)

  • へぼへぼCTO日記 - メールアドレス(addr-spec)の正規表現

    能書き 前エントリを書いてからいろいろと調べていて驚いたんだけど、日語のwebsiteで、それなりにまともにRFC822(RFC2822,RFC5322)に準拠した(もしくはきちんと意図的に準拠していない部分を選択している)正規表現はPerlだろうがPHPだろうがRubyだろうが軽くぐぐった程度では見当たらない。PerlのモジュールのEmail::AddressもEmail::Validも程度の差はあれ問題を抱えている。そこらへんの既存の出回ってる正規表現にどういった問題があるかなんてことは次回エントリにて。 というわけで、PerlPHPRubyでRFC5322準拠なメールアドレス(addr-spec)の正規表現を以下に示します。尚、addr-specの最終的な正規表現のみならずそれを作成するに至る部分も併記してあります。これは、最終的な正規表現だけでは難解すぎてとても理解できないか

    moriyoshi
    moriyoshi 2009/03/22
    domain-literalはIPv6なアドレスを書くときに必要ということはない?
  • へぼへぼCTO日記 - 「danコガいはもう正規表現をblogに書くな」と言わせないでくれ

    (タイトルはid:hasegawayosukeさんが言ってたよ) ああ、まただよ… 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ 正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「DAN」がつくとダメ正規表現ばかり登場するのか。うんざりだ。 飽きたので以下略。 簡潔に。(正規表現はdanさんのものからシングルクォートコンテキストにあわせてエスケープをしてあります) これの結果が「valid」になる。当然rfc5322でdot-atomには改行は(CRであれLFであれ)許されていない。 対策はdanさん自身が^$でなくて\A\zを使おうで述べているとおり。 ただしjavascriptではmフラグをつけない限りは$は改行直前にはマッチしないので問題なかったりもする。 ところでこの正規表現には他にも問題が残っている。domain-literalで\\\Sにマ

  • 1