Je viens de regarder la page du manuel de LimeSurvey sur les expressions régulières. Je n'ai jamais vu une telle concentration d'âneries de ma vie. (patterns mal écrites, naïves ou complètement fausses). On a l'impression en voyant ça que les rédacteurs ont copié/collé le premier résultat de leur moteur de recherche sans se poser la moindre question. C'est dingue de trouver ça dans la documentation d'un produit qui coûte 350€ ou 850€ par an pour les versions pro.
Cerise sur le gâteau, il n'y a ni tableau avec les fonctionnalités disponibles, ni le moteur de regex utilisé. Ils auraient pu remplacer leur fourbi de 200 lignes par "bonne chance!" que ça aurait été pareil!
[EDIT]J'ai été un peu dur, il y a une autre page, plus ancienne (2013) l'autre étant de 2017, avec des informations utiles. Mais les patterns ne sont pas meilleurs![/EDIT]
Bref, pour ce qui est de la question, si tu as un quelconque moyen d'éviter la regex pour faire ça, n'hésite pas (recherche de la position de 26 dans la chaîne, ou une opération arithmétique avec division entière par 1000 puis une comparaison...).
Si tu es obligé de passer par une regex, essaie d'inverser ton test et d'afficher tout ce qui ne matche pas la pattern:/^26/.
Sinon tu devras écrire une pattern qui décrit tout ce qui ne commence pas par 2 ou tout ce qui commence par 2 mais non suivi de 6: ou en décrivant précisément toute la chaîne:
/^([013-9][0-9]{4}|2[0-5789][0-9]{3})$/
(ces deux patterns n'utilisent pas de fonctionnalités particulières, il y a de grandes chances qu'elles fonctionnent.)
Le plus court serait d'utiliser un test avant négatif mais vue la doc, impossible de savoir à quoi s'en tenir. À tester donc:
/^(?!26)/ # début de chaîne non suivie de 26
ou pour la chaîne entière.
En ce qui concerne ton essai de pattern, attention [....] définie une classe de caractères et une classe de caractères est juste un sac avec des caractères dedant qui n'ont ni ordre ni signification particulière. Donc quand tu écris [^(26)] tu représentes un seul caractère qui ne peut pas être une parenthèse ou un deux ou un six. Les parenthèses à l'intérieur ne groupe rien. Seul le caractère ^ au début de la classe exprime la négation.
Partager