• [^] # Re: ia routeur

    Posté par . En réponse au lien Une IA conçoit un ordinateur Linux fonctionnel en une semaine. Évalué à 7. Dernière modification le 18 décembre 2025 à 20:44.

    En pratique, la regexp n'est probablement pas le meilleur algo pour le premier cas

    Non sans blague?

    /^([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})$/

    te donne 4 groupes dont tu as juste besoin de vérifier qu'ils sont entre 0 et 255

    par contre celle que t'as donnée testée sur https://regex101.com/ 1.2.3.4
    donne 4 groupe; ok
    1.2.3.4 ok
    1 ok, mais dans ce que je me serais attendu a 5, 1 pour la totale, et un par segment.
    .4 euhhh pourquoi le point, ils sont ou les 2 & 3
    4 bah au moins on risque pas trop de le rater :)

    ah et au passage elle me valide 102.2.3.265 mais en me tronquant le 5, mais ça 'matche'; bon on va laisser le bénéfice du doute en disant que le forum a bouffé le $

    Passons au 2eme exemple,

    pour le mail c'est pas malin de vouloir vérifier que l'adresse est syntaxiquement valide, sans vérifier que la personne sera capable de recevoir le mail; car c'est le but de la manœuvre, pouvoir la joindre :

    /.@./

    je vérifie qu'il y'a au moins 1 caractère avant et après l'@ et ensuite j'envoie le mail à l'adresse indiquée.

    Comment tu valide que ce que t'as donnée le générateur est valide qu'il a pas juste ressorti un truc faux trouvé au détour d'un forum ?

    Et... C'est exactement le point que je soulève, la regex que t'as donnée n'est pas bonne, elle refuse abc@124.4.12.1 qui est valide, alors en creusant un peu ailleurs on va trouver sur les forums (stack overflow) :

    /(?:[a-z0-9!#$%&'*+\x2f=?^_`\x7b-\x7d~\x2d]+(?:\.[a-z0-9!#$%&'*+\x2f=?^_`\x7b-\x7d~\x2d]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9\x2d]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\x2d]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9\x2d]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/

    Mais ce n'est pas parce que j'ai une regex toute prête que je vais l'utiliser, elle est illisible, je ne la comprends pas, et non maintenable, le tout pour une validation imparfaite (si le gars a tapé laryy.smooth@badaboum.yop au lieu de lary.smouth@badaboum.yop, ta regex le laisse passer, alors que la donnée n'est pas bonne.

    quant a la validation d'un mot de passe 'fort'

    &!J'@imel3sFrotesDeBruxelle

    ne passe pas donc à part donner des migraines à ceux devant donner des mots de passe je te conseilles d'éviter.

    Donc je maintiens que je trouve mon exemple assez pertinent

    Pour valider mon point tout à fait, je t'en remercie :)

    les LLM se débrouillent bien pour assister les humains à mettre en place des regexp complexes,

    ben ils font visiblement aussi mal, et en plus compliqué :); pour ta 3ème il faut dégager les ^ et $ (début et fin) on s'en fout de savoir que ça commence ou termine, faut juste s'assurer que le mot de passe est fort, mais là encore vouloir tout faire en une seule est compliqué et non maintenable

    exemple plus simple à comprendre, et où il est plus facile d'ajouter des règles :

     if(
     /[0-9]/ # at least 1 number 
     && /[^a-zA-Z0-9]/ # at least 1 character that is not a number and not a alphabetical character
     && /.{8}/ # at least 8 characters
     && /[a-z]/ # at least 1 lowercase character
     && /[A-Z]/ # at least 1 uppercase character
     ) { 
     print "ok\n";
     }

    l'autre point, c'est qu'en restant simple, tu risques pas d'exploser la pile, car les attaque à coup de backtrack sur les regex pour faire des denis de services, c'est malheureusement possible.

    Tu penses réellement qu'en te rappelant un peu ce que tu as appris en IUT, sans avoir pratiqué tous les jours, tu serais capable de produire une regexp de ce genre dans un temps proportionnel à la complexité de la tâche?

    Ben... sur les 3 exemple que tu m'as donné, j'ai des solutions plus fonctionnelle, moins bugué et compréhensible; donc...

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent