2012-11-18 103 views
0

我的url驗證正則表達式允許多於1 .www規則旁邊它工作正常。 你能看出爲什麼以及如何解決它?並隨時在我正則表達式爲什麼我的正則表達式允許超過1

function isurl($this_url) 
{ 
     if(preg_match("/^((http|https):\/{2})+([w]{3})+([\.]{1})+([a-zA-Z0-9-]+)+([\.]{1})+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i", $this_url)) 
      { 
      return true; 
      } 

} 


$this_url = "http://www..domain.com"; 

if (isurl($this_url)) 
{echo "Success";} 
else 
{echo "Fail";} 
+1

如果你能解釋想要的行爲是什麼,並且解釋你的正則表達式試圖做什麼,它會**真的有幫助。 – Lix

回答

1

刪除+在此([\.]{1})+,+表示一個或多個。試試這個吧

([\.]{1}) 
4

評論 「([。] {1})+」

加號的意思是 「一次或多次」。

4

([\.]{1})+評價爲(.){1 or more times}。在正則表達式上,+是不是的串聯。

+0

所以我需要刪除那裏的所有+號? – Norman

+0

@Norman是的,你這樣做。當你在它的時候,也刪除所有'{1}'。他們是多餘的。 –

+0

沒錯。謝謝。做到了。現在很好地工作。 – Norman