用于验证具有子域的 URL 的正则表达式


regular expression for validating url with sub-domain

preg_match('/^(http:''/'/)?(.+)'.MYDOMAIN'.com(.*)/', $url, $match)

这是我的正则表达式,用于验证必须具有子域的 URL,但如果有人使用www除了子域,它还会得到验证。例如:

  • http://shoes.en.MYDOMAIN.com/ 这必须通过

  • http://www.MYDOMAIN.com/ 这必须失败

如果子域www,如何编辑我的正则表达式以失败?

我认为你可以用一个消极的前瞻性断言来做到这一点:(?!www'.)协议检查后放置的,检查启动或协议之后是否有www.

/^(http:'''/'/)?(?!www'.)(.+)'.MYDOMAIN'.com(.*)/.test("www.MYDOMAIN.com")

试试这个:测试了一个litle,似乎正在工作

preg_match('/^(http:''/'/)?([^(www)]+)'.MYDOMAIN'.com(.*)/', $url, $match);

如何首先使用当前解决方案验证域,然后使用第二个表达式检查 www:

('.www'.|http:'/'/www'.|^www'.)