7
votes

Regex de ne pas autoriser les doubles traits de soulignement

essayer d'appliquer regex pour ne pas autoriser une chaîne à double signes xxx pré>

mais son échec dans de nombreux cas comme: p>

ab_      doesn't matches whereas it should
ab__c_   matches whereas it shouldn't.


0 commentaires

3 Réponses :


1
votes

Le [^] Syntaxe définit un SET de caractères afin qu'il correspond à un caractère non présent dans cet ensemble

Si vous souhaitez correspondre à deux caractères qui ne sont pas des traits de soulignement, vous pouvez utiliser [^ _] {2}

Mais si vous voulez vraiment vérifier si une chaîne comporte deux traits de soulignement, vous ferez la recherche de deux soulignes et nier le résultat

Par exemple dans Perl: "ab_"! ~ / __ /


0 commentaires

8
votes

[^ __] code> correspond à un caractère pas em> soussecore. Pour affirmer em> strong> que votre chaîne n'a pas deux souligneurs consécutifs, vous pouvez utiliser un Lookahead négatif em> :

^(?!.*__.*)[a-z][a-z0-9_-]+$


2 commentaires

Bonne réponse; Une seule correction: [^ __] correspond / un / caractère qui n'est pas un soulignement. Puis-je modifier votre message pour corriger cette faute de frappe?


@ Ron.Rothman: Vous avez vraiment raison. N'hésitez pas à le modifier, merci.



1
votes

en Perl, ce serait: xxx

ce qui signifie si la chaîne A contient "__" faire quelque chose, sinon faire autre chose. Bien sûr, il existe de nombreuses façons de faire fonctionner ce code


0 commentaires