Comment puis-je vérifier si un C # Expression régulière tente de match 1- (et seule-1) -Character Strings?

StackOverflow https://stackoverflow.com/questions/3870344

  •  28-09-2019
  •  | 
  •  

Question

Peut-être est une question très rare (voire muet), mais je ne en ont besoin dans mon application.

Comment puis-je vérifier si un C # expression régulière tente de faire correspondre les chaînes 1 caractères?

Cela veut dire, je ne les laisse aux utilisateurs de rechercher des chaînes 1 caractères. Si l'utilisateur tente de rechercher les chaînes multi-caractères, un message d'erreur exposerons aux utilisateurs.

Ai-je clair?

Merci.

Peter

P.S .: J'ai vu une réponse sur le calcul de la longueur des chaînes correspondant finales, mais pour une raison inconnue, la réponse est parti. Je pensais que pendant un certain temps, je pense calculer la longueur des chaînes mises en correspondance finale est correct, mais ça va être un peu lent. Pourtant, la question initiale est très rare et fastidieux.

Était-ce utile?

La solution

Au lieu de valider l'expression régulière, ce qui pourrait être compliqué, vous pouvez l'appliquer uniquement sur un seul caractère au lieu de toute la chaîne.

Si cela est impossible, vous pouvez limiter les possibilités d'expression régulière à certaines certaines fonctions. Par exemple, l'utilisateur ne peut entrer des caractères pour correspondre ou caractères à exclure. Ensuite, vous construisez le regex dans votre code.

par exemple:

  • ABC correspond [ABC]
  • ^ABC correspond [^ABC]
  • A-Z correspond [A-Z]
  • # correspond [0-9]
  • \w correspond \w
  • AB#x-z correspond [AB]|[0-9]|[x-z]|\w
  • quels cas avez-vous besoin de soutien?

Ce serait un peu facile à analyser et valider.

Autres conseils

une expression rationnelle serait .{1} Cela permettra à tout omble chevalier bien. si vous ne voulez alpanumeric vous pouvez utiliser [a-z0-9]{1} ou raccourci /w{1}

Une autre option son à limiter le nombre de caractères qu'un utilisateur peut entrer dans un champ d'entrée. définir un maxlength dessus.

Une autre option consiste à enregistrer les formes champ de saisie en char et non une chaîne bien que vous devrez peut-être une manipulation autour de ce pour éviter les erreurs.

Pourquoi ne pas utiliser maxlength et enregistrez-le char.

Vous pouvez chercher * déprotégés +, {}, etc. ? et compter le nombre de caractères (ne pas oublier d'aplatir le [] comme un seul caractère).

Fondamentalement, vous devez analyser votre regex.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top