0

私の URL 検証正規表現は、隣.のルールが正常に機能している場合に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";}
4

3 に答える 3

4

"([.]{1})+"

プラス記号は「1 回以上」を意味します。

于 2012-11-18T14:22:07.433 に答える
4

([\.]{1})+として評価され(.){1 or more times}ます。正規表現では、+ は連結ではありません。

于 2012-11-18T14:22:19.513 に答える
1

+このの を削除します。1 つ以上([\.]{1})+を意味します。+これを試して

([\.]{1})
于 2012-11-18T14:23:24.883 に答える