Question facile cette fois.
J'essaie de tester si une chaîne de caractères ne contient pas un caractère en utilisant des expressions régulières. Je pensais que l'expression était de la forme "[^]". x ]" où x est le personnage que vous ne voulez pas voir apparaître, mais ça n'a pas l'air de fonctionner.
Par exemple,
Regex.IsMatch("103","[^0]")
et
Regex.IsMatch("103&","[^&]")
Les deux retournent vrai (je m'attendrais à ce que ce soit faux).
J'ai commencé à utiliser "[^&]"
et j'ai pensé que peut-être le & devait être échappé en tant que \&, mais cela ne semblait pas faire de différence.
Des idées ? Je suppose que c'est quelque chose de petit.
De plus, j'utilise .NET, alors gardez cela à l'esprit.
Edit1 :
J'ai trouvé este mais cela ne semble pas répondre au problème que je rencontre.
Edit2 :
Je voulais répondre à Kevin y Joel Les suggestions de la Commission. Ces suggestions seraient en effet plus rapides, mais elles n'apportent pas la flexibilité dont j'ai besoin dans ce cas, donc si vous avez trouvé cette question par le biais d'une recherche, regardez définitivement si leurs réponses répondent à vos besoins. Dans mon cas, l'expression régulière est transmise à une méthode de validation DataTable qui boucle sur chaque ligne et vérifie que le contenu de cette ligne dans une colonne spécifique correspond à l'expression régulière transmise. Comme je vais réutiliser cette méthode pour plusieurs autres DataTables à valider, je voulais.. :
- Utilisez Regex pour permettre la plus large gamme de validations, et
- Toujours rechercher une correspondance positive (c'est-à-dire qu'au lieu d'utiliser !Regex.IsMatch(cell, regexvariable), je voulais m'appuyer sur le fait de toujours pouvoir utiliser Regex.IsMatch(cell, regexvariable) puisque la majorité des DataTables invoquant cette méthode utiliseront la correspondance positive au lieu de la négative.
J'espère que cela vous aidera.
0 votes
Si vous ne vérifiez que la présence d'un seul caractère, vous pouvez vous en sortir beaucoup mieux sans regex. Kevin a raison : utilisez .IndexOf() ou quelque chose de plus simple. Ce sera plus lisible, plus clair et plus rapide.