2009-12-17 6 views
3
PCRE: /\A[A-Z0-9_\.%\+\-][email protected](?:[A-Z0-9\-]+\.)+(?:[a-z]{2,4}|museum|travel)\z/i 
POSIX: /^[A-Z0-9_\.%\+\-][email protected](?:[A-Z0-9\-]+\.)+(?:[A-Z]{2,4}|museum|travel)$/i 

Cette regex est correcte à tous égards pour mes besoins, sauf qu'elle permet des emails tels que [email protected] Il dit que ce sont un match. Si je ne me trompe pas, le {2,4} après [A-Z] ne signifie-t-il pas qu'il doit être entre 2 et 4 caractères? Serait-ce un problème avec l'altercation et le musée et le voyage? J'ai vérifié que ceux-ci sont autorisés à travers dans ma demande, et quelques regex testers.Aussi, je suis flou sur si j'ai fait le PCRE et POSIX correctement. Je crains qu'ils puissent tous deux être PCRE et je suis ridicule. AFAIK, JavaScript est POSIX et Ruby est PCRE. Donc, si je n'ai pas bien compris, je me suis laissé aller à, ça a été une longue, longue nuit d'apprentissage des regexes, dedans et dehors, et j'essaye d'avoir l'air dingue. :)[A-Z] {2,4} ne limitant pas entre 2 et 4 caractères

+0

Pourquoi la démarque? –

+0

Vous voulez dire pourquoi ai-je mis en gras cette section? Si c'était le cas, j'espérais que quelqu'un d'autre pourrait répondre à cette autre question. Ce n'est pas vraiment formulé comme une question, mais je me suis méfié de changer tout le libellé réel de peur de l'avoir roulé en arrière. Donc, je viens d'en gras cette section vague, ha. Peut-être que vous pouvez aider, parce que mon google-fu ne fonctionne pas ou quelque chose en ce moment. Ai-je raison de supposer que la bibliothèque RegEx de ruby ​​est PCRE et que JavaScript est POSIX? Aussi c'est pourquoi je ne marquais pas sa réponse dans l'espoir qu'il reviendrait parce que je ne pouvais pas lui envoyer de message. Je suis sûr de le remarquer –

+0

Non désolé - Je voulais dire que quelqu'un a marqué votre question vers le bas (à -1), mais je pensais que c'était une question tout à fait raisonnable, donc je vous ai donné un +1, et laissé le commentaire :) –

Répondre

10

Oui, mais cela s'applique uniquement au nom de domaine de niveau supérieur (le "com" dans votre exemple).

+0

Oh jeez. Vous avez absolument raison. Merci mec. –

+1

Juste un aparté ai-je raison sur PCRE = Ruby et POSIX = Javascript? –

+1

Non. Ruby n'a pas d'expressions rationnelles Perl, mais des expressions rationnelles Ruby. Plus précisément: Ruby 1.8 a Ruby 1.8 Regexps, et Ruby 1.9 a Ruby 1.9 Regexps, et les deux sont assez différents. (Ruby 1.9 est beaucoup plus puissant.) Les Regexps de Ruby 1.8 sont une implémentation totalement indépendante, Ruby 1.9 est basée sur une fourche fortement modifiée du moteur Oniguruma Regexp. Ni Ruby 1.8 ni Oniguruma ne reposent sur rien, sauf bien sûr que leurs auteurs respectifs connaissent le livre de Friedl (Mastering Regular Expressions), PCRE, Perl, POSIX BRE et ERE et ainsi de suite. –

0

Posix ne supporte pas les groupes non-capture (?:group) donc ni de vos expressions rationnelles sont Posix. JavaScript n'utilise pas POSIX. Les expressions régulières JavaScript sont de style Perl mais ne possèdent pas toutes les fonctionnalités. Vérifiez le regex flavor comparison sur mon site pour plus de détails.