2010-03-22 179 views
8

我需要使用正則表達式來檢查網址。檢查網站地址的正則表達式

如果用戶類型的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_]+)*)$/ 

但它只會允許第二個選項。我如何可以修改正則表達式,這樣,它應該接受第1和第3個選項太

+0

看到的是https:// mathiasbynens .be/demo/url-regex –

回答

21

這是一個非常基本的表達測試域名:

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

應符合:

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

請注意,此答案不匹配大寫字母。 – Turtle

+3

幾分鐘前,我在模式的末尾添加了小「我」。這應該解決它。 –

+1

對於.Net,它是(?i:(http \:\/\/| https:\/\ /)?([a-z0-9] [a-z0-9 \ - ] * \。) + [a-z0-9] [a-z0-9 \ - ] * $) – Hong

1

可以使http://可選,也是shttps可選爲:

/^((?: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

使用以下程序驗證網站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"; 
      } 
    ?> 

 
0

嘗試以下操作來代替:

filter_var($your_variable, FILTER_VALIDATE_URL); 
+0

parse_url()函數在這種情況下也很有用。 –

1

您可以使用此模式也:

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

這將爲匹配工作:

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

用於匹配的簡單模式。

希望這會幫助別人!

+0

爲我工作。 – IamKarim1992

1

模式

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

這將爲匹配工作:

www.demo。COM

http://foo.co.uk/

4
(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9]\.[^\s]{2,}) 

將符合以下情況:

不會匹配以下: