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



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

如果用户在文本框中输入任何电子邮件ID,则验证错误消息应显示用户不能在文本框内输入电子邮件ID。

我已经尝试了以下代码:

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,则会发出验证消息,说明您不能在文本框中输入emailid,该消息是正确的,并保留在addlisting.aspx页面中。

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

当用户输入例如hello test@gmail.com how are you时,由于文本框中存在emailid,因此不会抛出验证消息。我在这里知道它只是比较values[0],它是hello,然后直接进入其他部分。

如何做到这一点?

您使用的Regex匹配字符串的开始(^(和结束($(。

^([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));

输出CCD_ 10。

顺便说一句,这里有一个regex,它几乎与RFC 5322规范相匹配:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|\[x01-x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21-x5ax53-x7f]|\[x01-x09x0bx0cx0e-x7f])+)])

您需要扫描所有数组,直到发现任何错误。的种类

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

你能试试这样的方法吗?:

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

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

相关内容

  • 没有找到相关文章

最新更新