[VBA] RegEx check voor url geldigheid

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In VBA gebruik ik het volgende RegEx pattern om een RegEx check te doen op de geldigheid van een url:

RegEx.Pattern = "^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$"

Deze werkt aardig, maar gaat de mist in bij url's waar een dubbele punt in zit, en dan bedoel ik niet achter de http, maar verderop in de url. Een voorbeeld:

http://www.google.nl/sear...official&client=firefox-a

Deze url wordt ten onrechte als niet juist beschouwd met deze reguliere expressie. Iemand een idee hoe ik de expressie aan kan passen, zodat dit soort url's door de check komen?
Ik durf zelf niet zomaar wat aan te passen, dan zou namelijk de url misschien door de test komen daarna, maar daarmee ook misschien gevallen waarvoor dit niet zou moeten..

alvast bedankt!

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 06-09 16:59

CoolGamer

What is it? Dragons?

code:
1
RegEx.Pattern = "^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-:]+))*$"


Gewoon de dubbele punt toevoegen aan het einde bij de andere tekens die aan het einde mogen voorkomen.

[ Voor 8% gewijzigd door CoolGamer op 19-02-2011 15:17 ]

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Bang om iets te slopen? Schrijf een lijst testcases met verwachte uitkomsten waar je mee kunt controleren. Ga vervolgens wijzigingen maken.

Nog iets wat niet werkt: adressen binnen een lokaal domein (http://server/, http://server.local, etc.), toekomstige nieuwe TLDs, etc.

De essentiele vraag is dus: waarom wil je uberhaupt de url op 'geldigheid' checken met een regexp?


Edit: even [google=vba check validity of url/] (dat had je toch al gedaan? zeg maar braaf 'ja') levert een veel mooiere oplossing op, waarbij gebruik wordt gemaakt van een IE library. deze dus.

[ Voor 24% gewijzigd door ValHallASW op 19-02-2011 15:21 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Waarom wil je de geldigheid van een url weten?

Persoonlijk ben ik over het algemeen meer geinteresseerd in of de url werkt, daarvoor volstaat een head-request...

Acties:
  • 0 Henk 'm!

Verwijderd

Of één ping? :+

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Heb je opzich niets aan. Dat zegt enkel maar dat er een server reageert op dat dns request. Het zegt niet over die url, enkel iets over de server waar de url op zou kunnen staan.
Pagina: 1