Both sides previous revisionPrevious revision | Next revisionBoth sides next revision |
informatique:regexp [2016/01/11 09:24] – (?= pteu | informatique:regexp [2016/01/11 09:38] – valider une adresse email pteu |
---|
======Expressions régulières====== | ======Expressions régulières====== |
| |
Les expressions régulières, ou expressions rationnelles, ou motif (ou même regexp en anglais), est une suite de caractères issue de la logique (mathématique) qui permet de décrire des chaînes de caractères. | Les expressions régulières, ou expressions rationnelles, ou motif (ou même regexp en anglais), est une suite de caractères issue de la logique (mathématique) qui permet de décrire des chaînes de caractères. Il existe différentes notations, bien qu'elles se ressemblent beaucoup : POSIX, PCRE (Perl-Compatible Regular Expressions), Python, etc... [[https://fr.wikipedia.org/wiki/Expression_rationnelle#Standardisation|(plus de détail sur wikipedia)]] |
| |
=====Syntaxe===== | =====Syntaxe===== |
<code bash> | <code bash> |
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=.\-_*])([a-zA-Z0-9@#$%^&+=*.\-_]){8,}$ | ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=.\-_*])([a-zA-Z0-9@#$%^&+=*.\-_]){8,}$ |
| </code> |
| |
| * valider une adresse email selon le RFC 5322 (source : [https://regex101.com/r/gJ7pU0/1|regex101]) |
| <code bash> |
| /(?(DEFINE) |
| (?<addr_spec> (?&local_part) @ (?&domain) ) |
| (?<local_part> (?&dot_atom) | (?"ed_string) | (?&obs_local_part) ) |
| (?<domain> (?&dot_atom) | (?&domain_literal) | (?&obs_domain) ) |
| (?<domain_literal> (?&CFWS)? \[ (?: (?&FWS)? (?&dtext) )* (?&FWS)? \] (?&CFWS)? ) |
| (?<dtext> [\x21-\x5a] | [\x5e-\x7e] | (?&obs_dtext) ) |
| (?<quoted_pair> \\ (?: (?&VCHAR) | (?&WSP) ) | (?&obs_qp) ) |
| (?<dot_atom> (?&CFWS)? (?&dot_atom_text) (?&CFWS)? ) |
| (?<dot_atom_text> (?&atext) (?: \. (?&atext) )* ) |
| (?<atext> [a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+ ) |
| (?<atom> (?&CFWS)? (?&atext) (?&CFWS)? ) |
| (?<word> (?&atom) | (?"ed_string) ) |
| (?<quoted_string> (?&CFWS)? " (?: (?&FWS)? (?&qcontent) )* (?&FWS)? " (?&CFWS)? ) |
| (?<qcontent> (?&qtext) | (?"ed_pair) ) |
| (?<qtext> \x21 | [\x23-\x5b] | [\x5d-\x7e] | (?&obs_qtext) ) |
| # comments and whitespace |
| (?<FWS> (?: (?&WSP)* \r\n )? (?&WSP)+ | (?&obs_FWS) ) |
| (?<CFWS> (?: (?&FWS)? (?&comment) )+ (?&FWS)? | (?&FWS) ) |
| (?<comment> \( (?: (?&FWS)? (?&ccontent) )* (?&FWS)? \) ) |
| (?<ccontent> (?&ctext) | (?"ed_pair) | (?&comment) ) |
| (?<ctext> [\x21-\x27] | [\x2a-\x5b] | [\x5d-\x7e] | (?&obs_ctext) ) |
| # obsolete tokens |
| (?<obs_domain> (?&atom) (?: \. (?&atom) )* ) |
| (?<obs_local_part> (?&word) (?: \. (?&word) )* ) |
| (?<obs_dtext> (?&obs_NO_WS_CTL) | (?"ed_pair) ) |
| (?<obs_qp> \\ (?: \x00 | (?&obs_NO_WS_CTL) | \n | \r ) ) |
| (?<obs_FWS> (?&WSP)+ (?: \r\n (?&WSP)+ )* ) |
| (?<obs_ctext> (?&obs_NO_WS_CTL) ) |
| (?<obs_qtext> (?&obs_NO_WS_CTL) ) |
| (?<obs_NO_WS_CTL> [\x01-\x08] | \x0b | \x0c | [\x0e-\x1f] | \x7f ) |
| # character class definitions |
| (?<VCHAR> [\x21-\x7E] ) |
| (?<WSP> [ \t] ) |
| ) |
| ^(?&addr_spec)$/xmg |
</code> | </code> |