【发布时间】:2012-02-20 22:49:11
【问题描述】:
对于初学者,我已经检查了其他几个正则表达式线程,这不是经常被问到的“我如何使用正则表达式验证 URL”的问题。
我正在检查引用 URL 是 http 还是 https,并且“子域”由“staging”、“www”或“search”组成。
^(https|http)://(staging|www|search).mysite.com
(这个问题已经解决,编辑后的新问题)我相信我遇到的问题涉及到与开头插入符号相邻的括号。
有什么想法吗?
另外,我将如何在 .com 部分之后允许任何内容?而且由于某种原因,我可以在 URL 前面添加字符,例如 2http://staging.mysite.com 仍然可以使用,这是为什么呢?
编辑:我猜我的浏览器可能已经缓存了原来的正则表达式脚本,因为原来的问题现在已经解决了。
现在我唯一的问题是如何确保 2http://staging.mysite.com 不会验证?我认为插入符号意味着字符串必须以 http 或 https 开头。
我正在做一个 preg_match,我猜它只是检查字符串是否包含上述要求,而不是检查它是否实际上以 http 或 https 开头
【问题讨论】:
-
错误是什么?括号很好。 (你的点匹配一切,但没什么大不了的)。也尝试转义正斜杠。 '\/'
-
@sweaver2112 出于某种原因,即使 URL 实际上不是以 http 或 https 开头,字符串也会在 preg_match 中验证。也就是说,我可以在 http 之前添加任何内容,只要 URL 的其余部分完好无损,preg 匹配和正则表达式就会通过,即使它不是正确的。
-
将字符串的开头添加到您的模式中,如下所示:
^