2011-11-27 3 views
0

j'ai trouvé une version mise à jour du regex de John Gruber pour l'URL correspondant à in this post par l'utilisateur GianPac, qui indique qu'il a été adapté pour reconnaître URL sans protocole ou la partie www:Gruber URL Regex tweak pour capturer « domain.com »

(? i) \ b ((?: [az] [\ w -] +: (?:/{1,3} | [a-z0-9%]) | www \ d {0,3} [. ] | [a-z0-9 .-] + [.] [az] {2,4} /?) (?: [^ \ s() <>] + (([^ \ s() <> ] + | (([^ \ s() <>] +))))) (?: (([^ \ s() <>] + (([^ \ s() <>] +)))) | [^ \ s`!() [] {};: '\ "., <>?« »"' ']))

Alors que cela fonctionne dans la plupart des cas, je l'ai trouvé ne correspond pas "google.com". Il correspond "google.comm" et "google.co.uk", donc cela doit être un petit oubli. Le problème est, je déteste littéralement regex. C'est le fléau de ma vie. Je veux juste essayer et modifier une fois de plus pour permettre "google.com" - quelqu'un peut-il me jeter un pointeur? Je pense que c'est quelque chose à voir avec cette partie du code:

+[.][a-z]{2,4}/?) 

?

Répondre

1

Changez-le de {2,4} à {1,4} et il correspondra.

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.-]+[.][a-z]{1,4}/?)(?:[^\s()<>]+|(([^\s()<>]+|(([^\s()<>]+)))))(?:(([^\s()<>]+|(([^\s()<>]+))))|[^\s`!()[]{};:'\".,<>?«»“”‘’])) 

Il est encore tout à fait incompréhensible que, et je ne suis pas certaine que je fais confiance un vérificateur d'URL regex qui ne correspond pas à google.com pour commencer! La plupart des langages ont quelque chose de construit pour l'analyse des URL, c'est une meilleure option si possible de toute façon.

+0

Ouais merci - vous avez raison. Je publiais juste cette réponse :) – mootymoots