对于初学者,我已经检查了其他几个正则表达式线程,这不是经常被问到“如何使用Regex验证URL”问题。
我正在检查引荐网址是http还是https,以及“子网域”是否包含“暂存”,“www”或“搜索”。
^(https|http)://(staging|www|search).mysite.com
(这个问题已经解决,编辑后的新问题)我相信我遇到的问题涉及与开头插入符号相邻的括号。
有什么想法吗?
另外,如何在.com部分之后允许任何内容?由于某种原因,我可以在URL前面的字符例如2http://staging.mysite.com仍然可以工作,为什么会这样?
编辑:我想我的浏览器可能已经缓存了原始的正则表达式脚本,因为现在修复了原始问题。
现在我唯一的问题是如何确保2http://staging.mysite.com不会验证?我认为插入符表示字符串必须以http或https开头。
我正在做一个preg_match,我想它只是检查字符串是否包含上述要求,但是没有检查它是否真的以http或https开头
答案 0 :(得分:1)
$string = "https://www.mysite.com/foo/bar";
preg_match("~^(https|http)://(staging|www|search)\.mysite.com~", $string, $matches);
var_dump($matches);
array
0 => string 'https://www.mysite.com' (length=22)
1 => string 'https' (length=5)
2 => string 'www' (length=3)
就像一个魅力。如果您不要求结束模式(使用$
),则可以跟随任意字符。 2http://将无效,因为我们需要使用^
开始使用字符串(https | http)。