如何验证文本框不接受电子邮件ID

时间:2018-11-21 09:37:45

标签: c# asp.net validation

我有一个字段Company profile:文本框

如果用户在文本框中输入任何emailid,验证错误消息应显示用户无法在文本框中输入emailid。

我尝试了以下代码:

Regex regex = new Regex(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");

string[] values = commentstxt.Text.Trim().Split(' ');
for (int i = 0; i < values.Length; i++)
{
    bool isValid = regex.IsMatch(values[i].ToString().Trim());
    if (isValid)
    {
        //ScriptManager.RegisterStartupScript(this, this.GetType(), "CropImage", "alert('you can not enter email id.');", true);
        //break;
        Response.Write("<script language='javascript'>window.alert('you can not enter email id in company profile.');window.location='addlisting.aspx';</script>");
        break;
    }
    else
    {
        Server.Transfer("addlistingpost.aspx", true);
    }
}

如果用户仅输入test@gmail.com,则会显示一条验证消息,表明您无法在正确的文本框中输入电子邮件ID,并且停留在addlisting.aspx页面中。

如果用户输入说hello..how are you,它将重定向到也是正确的addlistingpost.aspx。

当用户输入说hello test@gmail.com how are you时,问题就出现了,因为文本框中存在emailid,它不会引发验证消息。我在这里知道,它只是比较values[0],即hello,然后直接进入else部分。

如何实现?

4 个答案:

答案 0 :(得分:2)

您使用的正则表达式与字符串的开头(Flux.range(0, 1000000).log().flatMap{ it + 1 }.subscribeOn(Schedulers.parallel()).subscribe() )和结尾(^)相匹配。

$

只需删除这些字符以匹配该行中的任何地方。

^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

尝试以下代码:

([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)

它输出Regex regex = new Regex(@"([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)"); string text = "hello test@gmail.com how are you"; Console.WriteLine(regex.IsMatch(text));

顺便说一下,这是一个正则表达式,几乎符合RFC 5322规范:

True

答案 1 :(得分:1)

您需要扫描所有阵列,直到发现任何错误。种类

Regex regex = new Regex(    @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
string[] values = commentstxt.Text.Trim().Split(' ');
bool isValid = true; // valid word == not email
for (int i = 0; i < values.Length && isValid; i++)
{
    bool isValid = !regex.IsMatch(values[i].ToString().Trim());
    if (!isValid)
    {
        //ScriptManager.RegisterStartupScript(this, this.GetType(), "CropImage", "alert('you can not enter email id.');", true);

        Response.Write("<script language='javascript'>window.alert('you can not enter email id in company profile.');window.location='addlisting.aspx';</script>");

    }
}
if (isValid)
{
    Server.Transfer("addlistingpost.aspx", true);
}

答案 2 :(得分:1)

Regex regex = new Regex(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
        string[] values = commentstxt.Text.Trim().Split(' ');

        bool isValid = false;


        for (int i = 0; i < values.Length; i++)
        {

            isValid = regex.IsMatch(values[i].ToString().Trim());


            if (isValid)
            {
                //ScriptManager.RegisterStartupScript(this, this.GetType(), "CropImage", "alert('you can not enter email id.');", true);
                //break;
                Response.Write("<script language='javascript'>window.alert('you can not enter email id in company profile.');window.location='addlisting.aspx';</script>");
                break;
            }
            else
            {
                continue;

            }


        }

        if(!isValid)
        {
            Server.Transfer("addlistingpost.aspx", true);
        }

答案 3 :(得分:1)

您可以尝试这样的方法,看看是否可行? :

Regex regex = new Regex(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
    string[] values = commentstxt.Text.Trim().Split(' ');
    bool hasEmail = false;
    foreach (string str in values)
    {
        bool isCurrentValid = regex.IsMatch(str.Trim());
        if (!isValid)
        {
            hasEmail = false;
        } else {
            hasEmail = true;
            break;
        }
    }

    if(hasEmail) {
        Server.Transfer("addlistingpost.aspx", true);
    } 
    else 
    { 
        Response.Write("<script language='javascript'>window.alert('you can not enter email id in company profile.');window.location='addlisting.aspx';</script>");
    }  

基本上,我把检查整个字符串的逻辑留在了循环之外。