asp.net中的网站/网址验证无效

时间:2013-01-04 11:31:50

标签: asp.net regex validation

<asp:RegularExpressionValidator ID="revWebsite" runat="server" ForeColor="Red"
 ControlToValidate="txtWebsite" ErrorMessage="Invalid Website (General Details)"
 ValidationExpression="(http|https)://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?">*
</asp:RegularExpressionValidator>

为什么不为之工作? :

www.website.com

www.domain.website.com

http://website.com

https://website.com

1 个答案:

答案 0 :(得分:1)

建议:如果您想验证某个网站,可以通过对其进行检查来确定其存在。

您可以使用custom validator。为此,请参阅以下示例:

<。>在.aspx页面中:

    <div>
        <asp:TextBox runat="server" ID="txtURL" ValidationGroup="vlg" />
        <asp:RequiredFieldValidator ID="rqfvURL"  ErrorMessage="Please Enter" ControlToValidate="txtURL" ValidationGroup="vlg"
            runat="server" />
        <asp:CustomValidator ID="cstmValURL" ErrorMessage="Please enter valid site" 
            ControlToValidate="txtURL"   runat="server"  ValidationGroup="vlg"
            onservervalidate="cstmValURL_ServerValidate" />
        <asp:Button Text="submit" ID="btn" runat="server" onclick="btn_Click" ValidationGroup="vlg" />
    </ div> 
<。>页面中的

 protected void cstmValURL_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (TestSite())
            {
                args.IsValid = true;
            }
            else
            {
                args.IsValid = false;
            }
        }

        private bool TestSite()
        {         
            Ping objPing = new Ping();
            bool blnResult = false;
            try
            {
                PingReply pngReply = objPing.Send(txtURL.Text.Trim(), 3000);
                if (pngReply.Status == IPStatus.Success)
                   return blnResult= true;
            }
            catch
            {
                return  blnResult=false;
            }
            return blnResult;
        }   

P.S。这只是一个建议。