问题
preg_match('/^(http:\\/\/)?(.+)\.MYDOMAIN\.com(.*)/', $url, $match)
This is my regex to validate a URL that must have a sub-domain, but if someone uses www
instead of sub-domain it also gets validated. For example:
http://shoes.en.MYDOMAIN.com/
This must passhttp://www.MYDOMAIN.com/
This must fail
How can I edit my regex to fail if the sub-domain is www
?
回答1:
I think you can do it with a negative lookahead assertion: (?!www\.)
which being placed after the protocol check, checks if there is not a www.
following the start or protocol.
/^(http:\\\/\/)?(?!www\.)(.+)\.MYDOMAIN\.com(.*)/.test("www.MYDOMAIN.com")
回答2:
try this one: tested a litle, seems to be working
preg_match('/^(http:\\/\/)?([^(www)]+)\.MYDOMAIN\.com(.*)/', $url, $match);
回答3:
How about first validate the domain using your current solution then check for www using a second expression:
(\.www\.|http:\/\/www\.|^www\.)
来源:https://stackoverflow.com/questions/10118536/regular-expression-for-validating-url-with-sub-domain