c#中如何利用正则表达式判定邮箱的合法性

c#中获取用户输入的邮箱字符串之后,如何利用正则表达式判定邮箱的合法性呢?
求判定模块的完整代码及关键代码解释,谢谢各位大神,百度知道最有爱了。。
没分给了。。

[csharp]
using System;
using System.Text.RegularExpressions;

namespace SG_VQCDataCollection
{
/// <summary>
/// 通过Framwork类库中的Regex类实现了一些特殊功能数据检查
/// </summary>
public class MetarnetRegex
{

private static MetarnetRegex instance = null;
public static MetarnetRegex GetInstance()
{
if (MetarnetRegex.instance == null)
{
MetarnetRegex.instance = new MetarnetRegex();
}
return MetarnetRegex.instance;
}
private MetarnetRegex()
{
}

/// <summary>
/// 判断输入的字符串只包含汉字
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsChineseCh(string input)
{
//Regex regex = new Regex("^[\一-\龥]+$");

//改了一下

Regex regex = new Regex("^[\一-\龥]+$");
return regex.IsMatch(input);
}

/// <summary>
/// 匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,
/// 也可以不用,区号与本地号间可以用连字号或空格间隔,
/// 也可以没有间隔
/// \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}|\(0\d{3}\)[- ]?\d{7}|0\d{3}[- ]?\d{7}
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsPhone(string input)
{
string pattern = "^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$";
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 判断输入的字符串是否是一个合法的手机号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsMobilePhone(string input)
{
Regex regex = new Regex("^13\\d{9}$");
return regex.IsMatch(input);

}

/// <summary>
/// 判断输入的字符串只包含数字
/// 可以匹配整数和浮点数
/// ^-?\d+$|^(-?\d+)(\.\d+)?$
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsNumber(string input)
{
string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\d+)?$";
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 匹配非负整数
///
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsNotNagtive(string input)
{
Regex regex = new Regex(@"^\d+$");
return regex.IsMatch(input);
}
/// <summary>
/// 匹配正整数
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsUint(string input)
{
Regex regex = new Regex("^[0-9]*[1-9][0-9]*$");
return regex.IsMatch(input);
}
/// <summary>
/// 判断输入的字符串字包含英文字母
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsEnglisCh(string input)
{
Regex regex = new Regex("^[A-Za-z]+$");
return regex.IsMatch(input);
}

/// <summary>
/// 判断输入的字符串是否是一个合法的Email地址
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsEmail(string input)
{
string pattern = @"^([\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(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 判断输入的字符串是否只包含数字和英文字母
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsNumAndEnCh(string input)
{
string pattern = @"^[A-Za-z0-9]+$";
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 判断输入的字符串是否是一个超链接
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsURL(string input)
{
//string pattern = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
string pattern = @"^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$";
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 判断输入的字符串是否是表示一个IP地址
/// </summary>
/// <param name="input">被比较的字符串</param>
/// <returns>是IP地址则为True</returns>
public static bool IsIPv4(string input)
{

string[] IPs = input.Split('.');
Regex regex = new Regex(@"^\d+$");
for (int i = 0; i < IPs.Length; i++)
{
if (!regex.IsMatch(IPs[i]))
{
return false;
}
if (Convert.ToUInt16(IPs[i]) > 255)
{
return false;
}
}
return true;
}

/// <summary>
/// 计算字符串的字符长度,一个汉字字符将被计算为两个字符
/// </summary>
/// <param name="input">需要计算的字符串</param>
/// <returns>返回字符串的长度</returns>
public static int GetCount(string input)
{
return Regex.Replace(input, @"[\一-\龥/g]", "aa").Length;
}

/// <summary>
/// 调用Regex中IsMatch函数实现一般的正则表达式匹配
/// </summary>
/// <param name="pattern">要匹配的正则表达式模式。</param>
/// <param name="input">要搜索匹配项的字符串</param>
/// <returns>如果正则表达式找到匹配项,则为 true;否则,为 false。</returns>
public static bool IsMatch(string pattern, string input)
{
Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}

/// <summary>
/// 从输入字符串中的第一个字符开始,用替换字符串替换指定的正则表达式模式的所有匹配项。
/// </summary>
/// <param name="pattern">模式字符串</param>
/// <param name="input">输入字符串</param>
/// <param name="replacement">用于替换的字符串</param>
/// <returns>返回被替换后的结果</returns>
public static string Replace(string pattern, string input, string replacement)
{
Regex regex = new Regex(pattern);
return regex.Replace(input, replacement);
}

/// <summary>
/// 在由正则表达式模式定义的位置拆分输入字符串。
/// </summary>
/// <param name="pattern">模式字符串</param>
/// <param name="input">输入字符串</param>
/// <returns></returns>
public static string[] Split(string pattern, string input)
{
Regex regex = new Regex(pattern);
return regex.Split(input);
}

/// <summary>
/// 判断输入的字符串是否是合法的IPV6 地址
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsIPV6(string input)
{
string pattern = "";
string temp = input;
string[] strs = temp.Split(':');
if (strs.Length > 8)
{
return false;
}
int count = MetarnetRegex.GetStringCount(input, "::");
if (count > 1)
{
return false;
}
else if (count == 0)
{
pattern = @"^([\da-f]{1,4}:){7}[\da-f]{1,4}$";

Regex regex = new Regex(pattern);
return regex.IsMatch(input);
}
else
{
pattern = @"^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$";
Regex regex1 = new Regex(pattern);
return regex1.IsMatch(input);
}

}
/* *******************************************************************
* 1、通过“:”来分割字符串看得到的字符串数组长度是否小于等于8
* 2、判断输入的IPV6字符串中是否有“::”。
* 3、如果没有“::”采用 ^([\da-f]{1,4}:){7}[\da-f]{1,4}$ 来判断
* 4、如果有“::” ,判断"::"是否止出现一次
* 5、如果出现一次以上 返回false
* 6、^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$
* ******************************************************************/
/// <summary>
/// 判断字符串compare 在 input字符串中出现的次数
/// </summary>
/// <param name="input">源字符串</param>
/// <param name="compare">用于比较的字符串</param>
/// <returns>字符串compare 在 input字符串中出现的次数</returns>
private static int GetStringCount(string input, string compare)
{
int index = input.IndexOf(compare);
if (index != -1)
{
return 1 + GetStringCount(input.Substring(index + compare.Length), compare);
}
else
{
return 0;
}

}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-27
不是有个专门做正则表达式的控件吗:RegularExpressionValidator

把ValidationExpression属性选中Internet电子邮件地址
或者键入:\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

挺方便的本回答被提问者采纳
第2个回答  2010-07-27
使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}

c#中如何利用正则表达式判定邮箱的合法性
\/\/\/ <returns>如果正则表达式找到匹配项,则为 true;否则,为 false。<\/returns> public static bool IsMatch(string pattern, string input) { Regex regex = new Regex(pattern); return regex.IsMatch(input); } \/\/\/ \/\/\/ 从输入字符串中的第一个字符开始,用替换字符串替换指定的正则表达式模...

求c#里,窗体应用程序中,如何确认输入的一个邮箱是否合法,求详细?
string email = txtEmail.Text;if (regEmail.IsMatch(email))\/\/email 填写符合正则表达式 { MessageBox.Show("符合正则表达式:"+regEmail.ToString()+"\\n邮箱填写成功!");} else { MessageBox.Show("不符合正则表达式:"+regEmail.ToString()+"\\n邮箱格式不正确!");} ...

C#中如何验证邮箱正确性?
正则表达式 验证Email地址:“^\\w+[-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$”

c#怎么判断文本框输入的电子邮箱格式是否正确,如果正确就执行下一个...
利用正则表达式:public bool IsEmail(string value){ return System.Text.RegularExpressions.Regex.IsMatch(value, @"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");} 传入字符串参数,返回 true 代表符合邮箱格式。

C# 编写一个程序 判断用户输入的邮箱格式是否正确并提示 知道输入正确...
^[0-9a-zA-Z_]+@[0-9a-zA-Z_]+\\.[0-9a-zA-Z_]+

asp.net(c#)如何读取数据库中数据来验证登陆的用户和密码是否正确_百度...
1、使用的ASP.NET(c#)代码开发语言里头的正则表达式Regex对象,它有一个IsMatch方法用于专门验证正则表达式。2、准备一段asp.net(c#)网页代码,用于测试邮箱地址格式呈现使用。3、准备一段asp.net(c#)网页的cs代码。4、执行我们的ASP.NET(C#)网页测试页面,输入字符串liu。5、输入正确格式的邮件地址,...

C# 邮箱验证求解释!!
在字符串双引号前面,表示这串字符串将不进行转义。其他的就是正则表达式的内容 ^ 匹配字符串开始,$ 匹配字符串结尾 \\w 匹配英文数字下划线 + 出现一次或更多次 出现0次或多次 [] 是一个集合 () 是一个分组 \\. 代表字符 .

网页制作中,如何判断输入了非法的字符?
UBB(form.username.value)这些时论坛使用的不让输入如 "<" ">" "'"这样的一些字符 就好了,不过用户名最好还时使用正则表达式 C#中的VS自带的 正则表达式:身份证: \\d{17}[\\d|X]|\\d{15} 电话号码: (\\(\\d{3}\\)|\\d{3}-)?\\d{8} 电子邮箱: \\w+([-+.']\\w+)*@\\w+([-.]...

C#如何对用户名进行合法性检查?比如开头只能用小写 只能包含字母数字和...
用正则表达式验证即可。Regex myRex = new Regex("这里根据你要求的正则表达式");string s = txtBox1.text;Match m = myRex.Match(s);下面是我我以前找的常用正则表达式。根据自己需要进行组合。"^\\d+$" \/\/非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" \/\/正整数 "^((-\\d...

c#怎么用正则判断路径合法性
正则表达式 webform 的话加个验证控件,里面的正则式自己写.--- 如果为了省事,完全可以用folderdialog和openfiledialog和savefiledialog,如果需要这样的方法,可以用DirectoryInfo ,生成实例, 然后exist可以判断存在否.

相似回答