Regex match d'une chaîne sans attaque et de fuite des espaces
La construction d'une expression qui va rejeter une inculte de la chaîne d'entrée.
Avoir un groupe de la liste blanche des symboles, y compris espaces. Mais il ne peut pas être utilisé lors de la première ou à la dernière position. Cependant, il peut être utilisé entre un leader et de découpage de la liste blanche symbole de n'importe quel montant.
Ont une expression suivante:
^[^\s][A-Za-z0-9\s]*[^\s]$
... mais il ne fonctionne pas dans plusieurs raisons, au moins, il correspond à l'attaque et de fuite position de toute non-blanc symbole, même si elle n'est pas dans la liste blanche. D'ailleurs, il ne correspond pas seule lettre, un mot, même si elle correspond à l'expression.
La liste blanche est A-Z, a-z, 0-9, espace.
Cas valide:
Abc132 3sdfas //everything ok
Invalide le cas n ° 1:
asd dsadas //leading\trailing space is exist
Invalide le cas n ° 2:
$das dsfds //not whitelisted symbol at the leading\trailing position
Donc, comment faire pour ajouter un espace symbole de la liste blanche si ce n'est pas le premier ou la fuite symbole?
- Pourriez-vous faire quelques exemples de valide et valide affaires?
- essayez d'utiliser \\s s'il vous plaît laissez-moi savoir si cela a aidé, j'ai eu le même problème et c'était ce qui me manquait
- oui, prendre un coup d'oeil
^[A-Za-z0-9]+(?:\s+[A-Za-z0-9]+)*$
^[A-Za-z0-9]+.*[A-Za-z0-9]+$
: premier caractère doit êtrealphanumeric
et au moins une occurrence, et la dernière devrait être aussi le même, avec tout le reste. permet-il de résoudre le problème?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser lookarounds pour s'assurer qu'il n'y a pas d'espaces aux deux extrémités:
Démonstration en direct
Mais si l'environnement ne prend pas en charge lookarounds suivantes regex fonctionne dans la plupart des moteurs:
^(?! |.* $)[A-Za-z0-9 ]+$
en JS ou voir la mise à jour.en fonction de votre moteur d'expressions régulières de soutien de regarder autour de
Démo