用于检查网站URL的正则表达式

时间:2010-03-22 06:14:42

标签: php regex

我需要使用正则表达式检查网址。

如果用户输入网址为

  1. www.test.com
  2. http://www.test.com
  3. https://www.test.com
  4. 我有一个像

    这样的正则表达式
    /^(http\:\/\/[a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9_\-]+)*\.[a-zA-Z]{2,4}(?:\/[a-zA-Z0-9_]+)*(?:\/[a-zA-Z0-9_]+\.[a-zA-Z]{2,4}(?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$/
    

    但它只允许第二个选项。如何修改正则表达式,以便它也应该接受第1和第3个选项

6 个答案:

答案 0 :(得分:22)

这是测试域名的一个非常基本的表达方式:

@^(http\:\/\/|https\:\/\/)?([a-z0-9][a-z0-9\-]*\.)+[a-z0-9][a-z0-9\-]*$@i

应匹配:

domain.com
www.domain.com
http://domain.com
https://domain.com

答案 1 :(得分:3)

使用以下程序验证网站网址。

它将验证以下内容和任何有效的网站网址。

  1. www.test.com
  2. http://www.test.com
  3. https://www.test.com
  4. 
        <?php
                $string_url="https://www.test.com";
                $reg_exp = "/^(http(s?):\/\/)?(www\.)+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/";
                if(preg_match($reg_exp, $string_url) == TRUE){
                echo "URL is valid format";
                }
                else{
                echo "URL is invalid format";
                }
        ?>
    
    
    

答案 2 :(得分:1)

您可以将http://作为可选内容,s中的https可选为:

/^((?:http(?:s)?\:\/\/)?[a-zA-Z0-9_-]+(?:.[a-zA-Z0-9_-]+)*.[a-zA-Z]{2,4}(?:\/[a-zA-Z0-9_]+)*(?:\/[a-zA-Z0-9_]+.[a-zA-Z]{2,4}(?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$/

答案 3 :(得分:1)

您也可以使用此模式:

(http(s)?://)?([\w-]+\.)+[\w-]+(/[\w- ;,./?%&=]*)?

这适用于匹配:

http://www.google.com
https://www.google.com
www.google.com
google.com
google.in

匹配的简单模式。

希望这会对某人有所帮助!!!

答案 4 :(得分:1)

模式

(https?:\/\/)?([\w\d]+\.)?[\w\d]+\.\w+\/?.+

这适用于匹配:

  

www.demo.com

     

http://foo.co.uk/

答案 5 :(得分:0)

请尝试以下方法:

filter_var($your_variable, FILTER_VALIDATE_URL);