Url regex validatie

Status
Niet open voor verdere reacties.

Deparis

Gebruiker
Lid geworden
18 apr 2013
Berichten
80
Hi!

Ik probeer voor mijn site formulier een url validatie te maken..
Heb het een en ander al geprobeerd maar krijg het maar niet voor elkaar om een url door te laten
die er bv. zo uitziet:
http://google.com/index.php?action=go

http://google.com/index.php dit gaat prima maar als er ?action=go achter komt dat faalt de regex.

Weet iemand wat ik moet veranderen om zo'n eerdergenoemde Url door te laten?
 
Laatst bewerkt:
Afhankelijk hoeveel usecases goed moeten gaan.
een van de meest effectieve (en enorme)
Code:
_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS

Een simpele die 'redelijk' werkt:

Code:
@^(https?|ftp)://[^\s/$.?#].[^\s]*$@iS

Maar echt afhankelijk hoe strikt je usecases moeten zijn
 
Zeer bedankt Wampier voor het snelle antwoord!
Ik ga ermee aan de slag.. inderdaad een ENORME regex.. maarja als het werkt.. who cares
Jammer alleen dat javascript geen url validatie kent zoals php wel heeft: (filter_var($url, FILTER_VALIDATE_URL))
 
Let wel dat de eerste regex ook cases vangt die filter_var wel toestaat. Zoals het opgeven van een URL die niet werkelijk routable is op internet (wel "legaal", niet uitvoerbaar)
 
Cool.. dan verslaat jou regex toch maar even mooi de php filter.. scratch scratch :d
 
Dus afhankelijk van je usecase. Als je alleen zeker wil zijn dat je URL's opslaat in je database met toegestane tekens e.d., is een simpele validatie voldoende.

Als je een extra zekerheid wil dat er een minimale bruikbaarheid gekoppeld is aan de URL (of iig uitfilteren van veelvoorkomende fouten) kun je wat verder gaan. Uiteindelijk moet je altijd een paar afwegingen maken.

Overigens (uiteraard) niet mijn regex's. Er zijn een aantal repositories met regex'en voor veelvoorkomende problemen. Het enige wat ik heb gedaan is de meest complete en de meest eenvoudige regex met een hoge score gecopieerd :)
 
Daarvoor mijn dank.. wellicht voor de toekomst zou het handig zijn als er een validatie komt die ook daadwerkelijk de opgegeven Url in de praktijk controleerd.. dus nagaat of deze wel écht bestaat.. geen idee of dit kan.. als je de feedback van een browser kunt opvangen dat een url niet bestaat zou het te doen zijn denk ik.. wellicht met een iframe of windows open..
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan