【发布时间】:2012-03-03 05:52:15
【问题描述】:
我有这个正则表达式来验证 URL:^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$^。这个正则表达式运行顺利,但我想在 URL 的开头添加一个限制 W 的数量。
如果用户尝试保存小于 3 W 的 URL(例如 ww),则正则表达式将拒绝保存。如果用户尝试保存超过 3 个 W 的 URL(例如 wwww),也会发生相同的结果。
我该如何解决这个问题?
提前致谢。
【问题讨论】:
-
从您的问题看来,您的用户可以为网址添加书签。但是,有很多网站在没有 www 的情况下宣传其 url。并且工作得很好。 (从技术上讲,拥有这三个 w 的工作量更大;)。您可能希望将此规则重新考虑为“如果 suburl 仅包含 w 并且少于或多于 3 个”。同样在这种情况下,您也会有误报,因为拥有像 ww.example.com 或 w2.example.com 这样的网站是完全有效的。
-
您是否只想检查它是否以
www.(即正则表达式^www\.[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$^)或其他什么开头? -
我的错误 - 正则表达式不会拒绝或允许验证,它匹配。我想查看 URL 是否包含“www”,如果包含,请检查此字符串是否正好是 3 个 W,而不是 1 个或 2 个或 4 个或更多。
-
@Erik 在回答中看到我的更新。这种模式是否完全以 www 开头。所以它匹配 www.google.co、google.com 但不匹配 ww.google.com。
-
在正则表达式中包含www和以www开头不一样。
标签: php regex validation url