2009/2/27 demerphq <demerphq@xxxxxxxxx>: > 2009/2/27 Adam Mercer <ramercer@xxxxxxxxx>: >> 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) | (?"ed_string)) > (?<domain> (?&dot_atom) | (?&domain_literal)) > (?<domain_literal> (?&CFWS)? \[ (?: (?&FWS)? (?&dcontent))* (?&FWS)? > \] (?&CFWS)?) > (?<dcontent> (?&dtext) | (?"ed_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) | (?"ed_pair)) > (?<quoted_string> (?&CFWS)? (?&DQUOTE) (?:(?&FWS)? (?&qcontent))* > (?&FWS)? (?&DQUOTE) (?&CFWS)?) > > (?<word> (?&atom) | (?"ed_string)) > (?<phrase> (?&word)+) > > # Folding white space > (?<FWS> (?: (?&WSP)* (?&CRLF))? (?&WSP)+) > (?<ctext> (?&NO_WS_CTL) | [\x21-\x27\x2a-\x5b\x5d-\x7e]) > (?<ccontent> (?&ctext) | (?"ed_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/" -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html