REGEX Match caractère spécial n'importe où dans la chaîne
Je ne suis pas une regex gars, j'ai donc besoin d'un peu d'aide, juste ne peux pas obtenir ma tête autour de ce...
Je suis en train d'écrire la page d'enregistrement et l'utilisation de asp.net les validateurs. J'ai besoin d'une regex validateur pour correspondre à un caractère spécial n'importe où à l'intérieur d'un mot, afin de satisfaire la condition qui dit que "ID doit avoir au moins un caractère spécial." Les caractères autorisés sont:
! "# $ % & ' () * + , -
. /: ; < = > ? @ [ \ ] ^
_ ` { | } ~
Une fois de plus, je suis un junior, et à avoir des problèmes avec habillage de ma tête autour de ce genre de choses en ce moment...
Pour l'instant j'ai
[\[\]\^$\.\|\?\*\+\(\)\\~`!@#%&-_+={}'""<>:;, ]{1,}
mais elle correspond à des numéros pour une raison quelconque, et parfois ne correspondent pas à des caractères en début de mot...
Donc, s'il vous plaît, si quelqu'un pouvait m'aider...
Juste une note: si vous poursuivez ASP.NET l'Adhésion, vous pouvez utiliser le
MinRequiredNonAlphanumericCharacters
-propriété pour s'assurer que les caractères spéciaux sont entrés dans le mot de passe.noooon, ne pas poursuivre Microsoft 🙂 La raison pour laquelle je ne peux pas utiliser ce fournisseur d'appartenances, c'est parce que cette validation sera en option peut être activée ou désactivée, selon les besoins du client...et nous ne serons pas capables de l'appliquer pour tous les clients de notre application. Merci pour la remarque mais..
OriginalL'auteur Alex | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper à '-' et '!'
Ressemble vous devez vous échapper ! ainsi
OriginalL'auteur Dave Kasper
Il serait plus facile de faire le contraire
^[0-9]|[a-z]|[A-Z]$
il a un caractère spécial si ce n'est pas
de cette façon, peut-être que ce woud être mieux [^a-zA-Z0-9]
Encore mieux serait d'exclure les espaces blancs trop
[^a-zA-Z0-9\s]
Pas vraiment, si vous traitez avec des caractères unicode ou même de l'ascii étendu, ce ne serait pas la même à tous.
OriginalL'auteur Sam I am
Pas un asp.net ou de la validation de l'expert. Mais, les classes de caractères seulement besoin de certains caractères échappés comme
[]
. Le tableau de bord-
représente une plage de caractères. Si utilisé comme un littéral, il peut être échappés et le mettre n'importe où, ou peut être placé au début ou à la fin de la classe ([-aa]
ou[aa-]
) et être traité comme un littéral. Aussi, le signe d'insertion au début de la classe, désigne un "négatif" de la classe de sens, les caractères, mais ces ([^not me]
).Il y a peut être d'autres constructions dans les classes avec une syntaxe spéciale unique à moteur (.NET peut être de cette façon, je ne suis pas sûr). Certaines séquences de déclencher une sous-classe aussi, je suppose.
Voici mon test du boîtier avec asp.net programme de validation à l'aide de vos caractères spéciaux. Ils peuvent être relavent je ne suis pas sûr. Les deux semblent pas valider vide d'entrée, cela peut ne pas être une regex chose.
Celui-ci semble prendre soin d'un problème de sécurité si c'est ème. Remarque le
<+'alpha char'
où "alpha" se réfère à une plage valide de caractères unicode selon certaines standard je pense.Il suffit de les ignorer si c'est loin.
OriginalL'auteur sln
Vous pouvez couper ce calmer un peu et de match les plages de caractères. Par exemple, cela correspond à tous les particuliers (et imprimable) caractères (y compris unicode) caractères:
Je suppose que si vous avez besoin pour correspondre à 1 ou plus, comme c'est spécifique à votre cas, alors ce serait le travail ainsi (Notez que le
+
opérateur regex est un raccourci pour{1,}
OriginalL'auteur Zombies
Vous pouvez en apprendre plus sur les regex ici:
http://regex.learncodethehardway.org/
il n'est pas difficile à faire;
bonne chance;
rtfm sympa, mais pas vraiment
N'est DONC pas pour RTFM réponses.
OriginalL'auteur Basem Aljedai