Regex avec des chiffres et des caractères spéciaux, mais pas de lettres
Je suis en train de faire une regex qui accepte une entrée avec tout décimal(de 0 à 9, +, * ou # mais ne devrait pas accepter toutes les lettres(a-z).
donc les nombres comme
- #192#
- *31#+32475728966
- 0479266315
- +32495959511
devrait être acceptée.
La regex n'est pas valide s'il y a une lettre dans la chaîne.
- #192#abbef
- a0479266315
C'est la regex que j'ai jusqu'ici:
private const string PhoneNumberRegex = "((\\d)|(\\*)|(\\#)|(\\+))?";
private bool IsValid(inputString)
{
//Accept * # + and number
Match match = Regex.Match(inputString, PhoneNumberRegex, RegexOptions.IgnoreCase);
return match.Success;
}
Mais cette expression renvoie également vrai sur #192#abbef
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ceci:
Où
^
et$
sont des ancres pour le début et la fin de la chaîne.Remarque:
RegexOptions.IgnoreCase
n'est pas nécessaire.Vous avez besoin pour ancrer votre chaîne avec
^
(début de ligne) et$
(fin de ligne). Sinon, votre chaîne correspond si tout partie des matchs.Aussi, vous voulez au moins l'un de ces personnages (vous ne voulez pas correspondre à une chaîne vide, de sorte que vous devriez utiliser
+
(un ou plusieurs).Enfin, vous pouvez faire un personnage de la classe de tous vos personnages:
[\d*#+]
.Mettant tout cela ensemble vous donne:
Cela signifie qu'à partir du début de la chaîne jusqu'à la fin, vous souhaitez qu'une ou plusieurs de ces caractères que vous avez énumérés.
Je crois que ça va répondre à vos besoins
Utiliser ceci :
pour plus d'informations visite de plz
http://www.regexlib.com/Search.aspx?k=special%20characters&AspxAutoDetectCookieSupport=1
http://www.cisco.com/en/US/docs/ios_xr_sw/iosxr_r3.4/getting_started/installation/guide/gs34aexp.pdf