J'ai besoin de définir une regex pour une chaîne avec les exigences suivantes: p>
Nom, Nom de famille Code> Li>
- Aucun chiffre et caractères spéciaux autorisés (à nouveau, c'est un nom et un nom de famille) Li>
ul>
J'ai déjà essayé quelque chose comme ^ [^ 1-9 \? \ * \ \ \? \ \ \ \ \ \ _ \ \ _] {1,20} [] [^ 1-9 \? . \? \ $ \ ^ \ \ \ \ -] {1,20} $ code> Mais comme vous pouvez le trouver, il correspond également à une chaîne longue de 40 caractères. P>
Comment puis-je vérifier la longueur maximale de la chaîne entière et, en même temps, imposer 1 virgule à l'intérieur de celui-ci et évidemment pas aux frontières? P>
merci p>
6 Réponses :
[[a-zA-Z],[a-zA-Z]]{1,20}
Non, que l'on peut comporter jusqu'à 40 caractères de long - 20 caractères ', 20 caractères
TORT!!!! J'ai explicitement dit que je ne dois pas correspondre que si toute la chaîne est de 20 caractères. Cela correspond à 41 caractères !! La prochaine fois, veuillez bien lire la question
Et aussi, certains noms / noms de famille ont des espaces, "-" ... Peut-être que vous pourrez peut-être obtenir un badge de pression de pair;)
Quel est le délimiteur entre les noms lorsque certains noms contiennent des espaces?
hey vous avez -3 votes si vous supprimez cette réponse, vous obtenez un badge
Comme je le dis, je pense que la façon dont vous l'avez, ce n'est pas assorti par une expression régulière - c'est une langue de poussée. P>
Cependant, vous pouvez toujours séparer sur "" et faire correspondre chaque sous-chaîne, puis totale. P>
J'ai considéré que l'ensemble de la vérification du modèle n'est pas uniquement associe par regex uniquement. Je pourrais sûrement utiliser la logique de validation Java / JavaScript. Mais j'ai demandé ici d'être sûr qu'il n'y a aucun moyen.
Depuis que vous pouviez même écrire toutes les cordes possibles et mettre des tuyaux entre les deux, vous pouvez clairement créer une regex ...
Bien sûr, cela peut être fait avec des expressions régulières, du moins quelles langues modernes considèrent une expression "régulière". La partie délicate est plutôt la définition de quels caractères sont valables dans un nom.
Bien sûr! En réalité, Facebook n'a pas permis aux noms d'espaces jusqu'à il y a un an ou quelque chose (et des espaces dans les noms de famille sont en réalité assez courants aux Pays-Bas)
Oui, j'aurais dû voir que les chaînes finies sont nécessairement un reconnaissance finie. Donc [a-za-z. '], [A-za-z] {1-19} + [a-za-z] {2}, [a-za-z.'] {1-18}. .. travaillera éventuellement.
Avez-vous essayé votre exemple mais enlevez le: au milieu, laissant p> [Modifier les exemples supprimés Vous avez déjà essayé et ils n'ont pas fonctionné:] P> Essayez ceci? P> ^[[^1-9\?\*\.\?\$\^\_],[^1-9\?\*\.\?\$\^\_\-]]{1,20}$
les deux permettent plus d'un? Supprimer le [] autour de la virgule? ^ [^ 1-9 \? * \. \? \ \ \ \ \ \ _], [^ 1-9 \? * \. \? \ \ $ \ \ _ \ -]] {1,20} $
Désolé pour le Downvote Scott, mais vous êtes sur une piste totalement erronée. [] -Brackets désignant une classe de caractères, ils ne sont pas de substitution pour () -Brackets. Et si vous utilisez des crochets ronds dans votre exemple, vous obtenez des choses totalement différentes comme "Un Char suivi d'une virgule suivie d'un caractère et de toute une chose une à vingt fois"
Merci c'est très utile! Je regardais un didacticiel tout en essayant de trouver la réponse et je pense que le tutoriel est un peu déroutant et manquait certaines informations, je me souviens de faire de la réégalité au collège et de penser que je pourrais peut-être trouver une réponse, oh bien
Vous pouvez le faire en utilisant des assertions négatives en avant: La regex contient deux parties maintenant, la définition effective et une déclaration au début, en disant que de ce point, il n'y en a pas Soyez 21 caractères. P> EDIT: strong> p> Donc, pour la définition indiquée ci-dessus, la regex devient p>
Semble étroit. J'ai essayé de tester ", nom de famille" et ça correspond. Pas le résultat attendu, mais peut-être que si je remplace * avec + je peux obtenir quelque chose de bien
À propos, je vous accepte actuellement, vous n'incluez actuellement que des lettres (les noms ont des espaces ou des citations simples telles que "D'Amato", des accents, etc.) Et je compte vraiment que votre réponse est acceptée après avoir effectué quelques tests
Oui, je viens de prendre un simple ensemble de caractères à tester avec. Il suffit de remplacer votre décodeur, et cela devrait fonctionner. Et en effet, vous voulez + au lieu de *, je vais éditer cela.
Ça devrait vraiment être "^ (?!. {21}) [^ 1-9 \? * \. \? \ \ \ \ \ \ \ \ \,] +, [^ 1-9 \? * \ \ ^ _ \,] + $ ", mais si l'assertion fonctionne, il bat ma réponse par un mile :-)
Éditôt, juste pour être clair. Cela fonctionne au moins dans les langues qui soutiennent les affirmations avant. Dans d'autres langues, votre solution est la bonne.
La réponse évidente serait: Ne demandez pas le nom et le nom de famille dans le même champ de saisie.
Si vous voulez toujours le faire: Il n'y a pas de moyen facile de savoir que je sache, mais voici une possibilité. Pour voir le principe, pensez à votre assez moche, mais devrait fonctionner. P> sur un autre Remarque: vous ne capturez pas presque tous les caractères spéciaux avec votre gamme exclusive. Mais c'est probablement encore mieux qu'une gamme inclusive. P> p> [^ 1-9 \? \ \ \ \ \? \ \ \ \ \ \ \ \,] Code> au lieu de x code> (j'ai ajouté il < code> \, code> car il est un peu important: -)). p>
Désolé, mais la réponse évidente n'est pas une option pour moi, ce n'est pas un designer;) Quoi qu'il en soit, évolu depuis la laide solution au moins fonctionne b>
Essayez la regex: Explication: P> ^ : Start anchor
(?=[^,]+,[^,]+$) : Positive lookahead to ensure string has exactly one comma
surrounded by atleast one non-comma character on both sides.
[a-zA-Z,]{1,20} : Ensure entire string is of length max 20 and has only
letters and comma
$ : End anchor
Très bonne explication. Je l'ai essayé dans Regexlib.com/reter.aspx mais il ne correspond pas "Nom, Nom" . Quel est le problème avec ma copie / pâte?
Il h. Je n'ai pas le temps de le prouver maintenant (la marge n'est pas assez grande de toute façon) mais je pense que cela peut ne pas être possible avec une expression régulière.
Je suggérerais vraiment de saisir la version gratuite d'Expresso. (ou payer pour Regexbuddy). Ils sont indispensables.
En supposant que 20 est juste un nombre arbitraire, je connais des personnes avec 14 lettres dans leur nom de famille seul! Vous voudrez peut-être l'heurter si cela est pour un projet non trivial, ou vos clients pourraient être contrariés lorsqu'ils découvrent que leur nom est incompatible avec le logiciel!
@GlowCoder: L'exigence ne vient pas de mon cerveau. Je vais sûrement laisser des mots à qui est responsable ...
S'il vous plaît dites-nous, quel type de délimiteur entre les noms.
Donc, le nom et le nom de famille se composent d'au moins 1 caractères? Ou peut-il être vide ou juste l'un d'entre eux?
Quel est le délimiteur entre les noms lorsque certains noms contiennent des espaces?