为什么我的正则表达式允许超过1

时间:2012-11-18 14:19:39

标签: php regex

我的网址验证正则表达式在其旁边的.规则正常工作时允许超过1 www。 你能明白为什么以及如何解决它吗?并随意评论我的正则表达式

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";}

3 个答案:

答案 0 :(得分:4)

  

“([。] {1})+”

加号表示“一次或多次”。

答案 1 :(得分:4)

([\.]{1})+的评估结果为(.){1 or more times}。在正则表达式上,+ NOT 是串联。

答案 2 :(得分:1)

删除此+中的([\.]{1})++表示一个或多个([\.]{1}) 。试试这个

{{1}}