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

js81xvg6  于 2023-04-04  发布在  PHP
关注(0)|答案(7)|浏览(124)

我需要检查网址,使用正则表达式。
如果用户键入URL为

  1. www.test.com
  2. http://www.test.com
  3. https://www.test.com
    我有一个像这样的正则表达式
/^(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_]+)*)$/

但是它只允许第二个选项。我如何修改正则表达式,使它也接受第一个和第三个选项?

kxe2p93d

kxe2p93d1#

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

@^(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
8wtpewkr

8wtpewkr2#

使用以下程序验证网站URL。
它将验证以下内容和任何有效的网站URL。

  1. www.test.com
  2. http://www.test.com
  3. https://www.test.com
<?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";
            }
    ?>
kq0g1dla

kq0g1dla3#

您也可以使用此模式:

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

这将用于匹配:

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

简单的匹配模式。
希望这对某人有帮助!!!

57hvy0tb

57hvy0tb4#

您可以将http://设置为可选,也可以将https中的s设置为可选,如下所示:

/^((?: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_]+)*)$/
xoefb8l8

xoefb8l85#

模式

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

匹配时可以使用:

www.demo.com
http://foo.co.uk/

1mrurvl1

1mrurvl16#

请尝试以下操作:

filter_var($your_variable, FILTER_VALIDATE_URL);
mwngjboj

mwngjboj7#

我的正则表达式可以处理所有类型的URL。

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

相关问题