Hoi allemaal,

Het is voor mij alweer een redelijke tijd geleden dat ik met PHP bezig ben geweest. En mettertijd vervliegt je kennis toch wel, heb ik gemerkt. Helaas, maar toch. Nu ik weer een beetje mijn kennis aan het ophalen ben, probeerde ik een 'regex' (regular expression) te maken om een URL te checken. Echter weet ik totaal niet meer hoe ik die precies moet maken en wat blijkt: hij werkt ook niet.

Ik heb het met de volgende regex geprobeerd:
#www\.[a-z](1,)\.[a-z](2,)(\.[a-z](2,))?#si

Het enige waar de URL aan hoeft te voldoen is 'www.phphulp.nl'. That's it!

Ik hoop dat iemand me even uit de brand kan helpen, zal vast wel fijn zijn, haha.

Groet,
Jesper
Ipv (min,max) moet je {min,max} hebben.

Als je wilt dat hij alleen "www.phphulp.nl" matcht, en niet "blablawww.phphulp.nlmop" moet je je pattern beginnen met ^ en eindigen met $, om het begin en eind aan te geven.

{1,} is "match één keer of vaker". Daar kan je ook + voor gebruiken.

(blabal) gebruik je om een match te onthouden. Als je alleen maar wilt groeperen, kan je ook (?:blabla) gebruiken. Dus als je wilt dat de tld (.nl in dit geval) optioneel wordt (dat wil je?, want ? betekent "match null of één keer") dan kan je schrijven (?:\.[a-z]{2,})?

#^www\.[a-z]{2,}(?:\.[a-z]{2,})?$#i
matcht:
www.phphulp.nl
www.phphulp

Ik neem aan dat je weet dat lang niet alle geldige urls aan die expressie voldoen, maar daar vroeg je ook niet om :)
Nee dat tweede deel "(\.[a-z](2,))?" is om eventueel een tweede deel (zoals bij .co.uk) ook toe te laten ;). Ik weet niet of je daar ook nog iets voor hebt?

Edit: Deze gebruik ik nu en werkt!
#^www\.([a-z]{1,})\.([a-z|\.]{1,})$#si

Ik hoop dat hij ook voldoet en dat ik er niet gekke deuren mee heb open gezet? :)

Reageren