git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Checking for a valid email address

From
Ddemerphq <demerphq@gmail.com>
Date
Feb 27, 2009, 09:25 UTC
Message-ID
<9b18b3110902270125p76ac118ckd21cb2d427940db2@mail.gmail.com>
In-Reply-To
<9b18b3110902270120t15babbc0oe2975c086297e1e0@mail.gmail.com>
2009/2/27 demerphq <demerphq@gmail.com>:
Show 71 quoted lines
> 2009/2/27 Adam Mercer <ramercer@gmail.com>:
>> Hi
>>
>> We are in the process of migrating some of our repositories from CVS
>> to Git in a two step process, first to a centralised Git setup then
>> (hopefully) onto a more distributed development model. In the testing
>> we have been doing so far the only problem we have run into is
>> developers not setting their email addresses correctly so the
>> changelogs are filled with spurious address. Does anyone know of a
>> pre-commit hook that could check for a valid email address prior to
>> allowing a commit? Or another way that this can be acheived?
>
> If you are using Perl 5.10 or later then you can use the following regex:
>
> my $email = qr {
>    (?(DEFINE)
>      (?<address>         (?&mailbox) | (?&group))
>      (?<mailbox>         (?&name_addr) | (?&addr_spec))
>      (?<name_addr>       (?&display_name)? (?&angle_addr))
>      (?<angle_addr>      (?&CFWS)? < (?&addr_spec) > (?&CFWS)?)
>      (?<group>           (?&display_name) : (?:(?&mailbox_list) | (?&CFWS))? ;
>                                             (?&CFWS)?)
>      (?<display_name>    (?&phrase))
>      (?<mailbox_list>    (?&mailbox) (?: , (?&mailbox))*)
>
>      (?<addr_spec>       (?&local_part) \@ (?&domain))
>      (?<local_part>      (?&dot_atom) | (?&quoted_string))
>      (?<domain>          (?&dot_atom) | (?&domain_literal))
>      (?<domain_literal>  (?&CFWS)? \[ (?: (?&FWS)? (?&dcontent))* (?&FWS)?
>                                    \] (?&CFWS)?)
>      (?<dcontent>        (?&dtext) | (?&quoted_pair))
>      (?<dtext>           (?&NO_WS_CTL) | [\x21-\x5a\x5e-\x7e])
>
>      (?<atext>           (?&ALPHA) | (?&DIGIT) | [!#\$%&'*+-/=?^_`{|}~])
>      (?<atom>            (?&CFWS)? (?&atext)+ (?&CFWS)?)
>      (?<dot_atom>        (?&CFWS)? (?&dot_atom_text) (?&CFWS)?)
>      (?<dot_atom_text>   (?&atext)+ (?: \. (?&atext)+)*)
>
>      (?<text>            [\x01-\x09\x0b\x0c\x0e-\x7f])
>      (?<quoted_pair>     \\ (?&text))
>
>      (?<qtext>           (?&NO_WS_CTL) | [\x21\x23-\x5b\x5d-\x7e])
>      (?<qcontent>        (?&qtext) | (?&quoted_pair))
>      (?<quoted_string>   (?&CFWS)? (?&DQUOTE) (?:(?&FWS)? (?&qcontent))*
>                           (?&FWS)? (?&DQUOTE) (?&CFWS)?)
>
>      (?<word>            (?&atom) | (?&quoted_string))
>      (?<phrase>          (?&word)+)
>
>      # Folding white space
>      (?<FWS>             (?: (?&WSP)* (?&CRLF))? (?&WSP)+)
>      (?<ctext>           (?&NO_WS_CTL) | [\x21-\x27\x2a-\x5b\x5d-\x7e])
>      (?<ccontent>        (?&ctext) | (?&quoted_pair) | (?&comment))
>      (?<comment>         \( (?: (?&FWS)? (?&ccontent))* (?&FWS)? \) )
>      (?<CFWS>            (?: (?&FWS)? (?&comment))*
>                          (?: (?:(?&FWS)? (?&comment)) | (?&FWS)))
>
>      # No whitespace control
>      (?<NO_WS_CTL>       [\x01-\x08\x0b\x0c\x0e-\x1f\x7f])
>
>      (?<ALPHA>           [A-Za-z])
>      (?<DIGIT>           [0-9])
>      (?<CRLF>            \x0d \x0a)
>      (?<DQUOTE>          ")
>      (?<WSP>             [\x20\x09])
>    )
>
>    (?&address)
> }x;
>
> which is a fully RFC compliant perl regex for validating any email address.
Er, i meant validating whether any email address is well formed of course.

Cheers, yves

-- 
perl -Mre=debug -e "/just|another|perl|hacker/"
Previous: demerphqNext: Adam Mercer
Message 5 of 6 in “Checking for a valid email address”
  1. Adam MercerFeb 27, 2009
  2. Miklos VajnaFeb 27, 2009
  3. Adam MercerFeb 27, 2009
  4. demerphqFeb 27, 2009
  5. demerphqFeb 27, 2009
  6. Adam MercerFeb 27, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.