Au chapitre: XI. Quand ne pas utiliser les expressions rationnelles ?
la deuxième pattern (celle pour l'IPv4) est erronée:
(?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]\.){3}[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]
et devrait être (avec des ancres pour coller à la fonction qui suit, et des groupes non capturant pour que le point soit correctement en facteur et pour que soient enfermées les alternatives | à la fin):
^(?:(?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.){3}(?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$
À noter, qu'on peut aussi l'écrire:
^(?:(?:[01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.?\b){4}$
voire même:
^(?:(?:[01]?\d\d?|2[0-4]\d|25[0-5])\.?\b){4}$
ce qui au final n'est pas si long que ça.
Sinon je rejoins un des commentaires précédents pour le coté condensé du tutoriel, sans trop s'éparpiller en détails, qui peut être un avantage pédagogique pour certaines personnes qui seraient rebutées par un tutoriel trop long et au final décourageant.
Partager