本实例介绍如何使用正则表达式验证E-mail格式是否正确,主要是使用Regex类的IsMatch方法来判断指定的电子邮箱格式是否合法。IsMatch方法用于指示Regex类构造函数中指定正则表达式在输入字符串中是否找到匹配项。该方法有多种重载形式,本实例所使用的重载形式声明如下:
public static bool IsMatch (string input,string pattern)
参数说明
l input:要搜索匹配项的字符串。
l pattern:要匹配的正则表达式模式。
l 返回值:如果正则表达式找到匹配项,则为True;否则为False。
主要代码如下:
public bool IsEmail(string str_Email)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Email, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9] {1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/)?]$");
}
本实例介绍如何使用正则表达式验证IP地址是否正确,主要是使用Regex类的IsMatch方法来判断指定的IP格式是否合法。本实例使用"^"+num+"//."+num+"//."+num+"//."+num+"$"表达式来验证。
主要代码如下:
public bool IPCheck(string IP)
{
string num = "(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)";
return Regex.IsMatch(IP,("^"+num+"//."+num+"//."+num+"//."+num+"$"));
}
本实例介绍如何使用正则表达式验证URL地址是否正确,主要是使用Regex类的IsMatch方法来判断输入的URL格式是否合法。本实例使用“http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?”表达式来验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsUrl(textBox1.Text))
{ MessageBox.Show("网址格式不正确!!!"); }
else { MessageBox.Show("网址格式正确!!!!!"); }
}
public bool IsUrl(string str_url)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_url, @"http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?");
}
本实例介绍如何使用正则表达式验证电话号格式,主要是使用Regex类的IsMatch方法来判断指定的电话格式是否合法。中华人民共合国境内电话号码主要由3~4位区号和6~8位本地电话号码构成。本实例使用“^(/d{3,4}-)?/d{6,8}$”表达式来验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsTelephone(textBox1.Text))
{ MessageBox.Show("电话号码格式不正确"); }
else { MessageBox.Show("电话号码格式正确"); }
}
public bool IsTelephone(string str_telephone)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_telephone, @"^(/d{3,4}-)?/d{6,8}$");
}
本实例介绍如何使用正则表达验证输入密码条件,主要是使用Regex类的IsMatch方法来判断输入的密码格式是否合法。本实例中要求输入密码必须是由数字和26个英文字母组成的密码字符串,因此使用“^[/a-zA-z]+[/0-9]+$”表达式来验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsPassword(textBox1.Text))
{ MessageBox.Show("密码格式不正确!!!"); }
else { MessageBox.Show("密码格式正确!!!!!"); }
}
public bool IsPassword(string str_password)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_password, @"^[/a-zA-z]+[/0-9]+$");
}
本实例介绍如何使用正则表达式验证邮证编号格式,主要是使用Regex类的IsMatch方法来判断指定的邮政编号格式是否合法。中华人民共合国境内邮政编号由6位数字构成,本实例使用“^/d{6}$”表达式来验证邮政编号的合法性。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsPostalcode(textBox1.Text))
{ MessageBox.Show("邮政编号不正确!!!"); }
else { MessageBox.Show("邮政编号正确!!!!!"); }
}
public bool IsPostalcode(string str_postalcode)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_postalcode, @"^/d{6}$");
}
本实例介绍如何使用正则表达式验手机号格式,主要是使用Regex类的IsMatch方法来判断指定的手机号格式是否合法。中华人民共合国境内手号由11位数字构成。本实例使用“^[1]+[3,5]+/d{9}”表达式来验证输入手机号的合法性。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsHandset(textBox1.Text))
{ MessageBox.Show("手机号不正确!!!");}
else { MessageBox.Show("手机号正确!!!!!");}
}
public bool IsHandset(string str_handset)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^[1]+[3,5]+/d{9}");
}
本实例介绍如何使用正则表达式验证身份证号格式,主要是使用Regex类的IsMatch方法来判断指定的身份证号格式是否合法。中华人民共合国境内的身份证号有两种类型分别为15位数字和18位数字。本实例使用“(^/d{18}$)|(^/d{15}$)”表达式来验证身份证号的合法性。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsIDcard(textBox1.Text.Trim()))
{ MessageBox.Show("身份证号不正确!!!"); }
else { MessageBox.Show("身份证号正确!!!!!"); }
}
public bool IsIDcard(string str_idcard)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_idcard, @"(^/d{18}$)|(^/d{15}$)");
}
本实例介绍如何使用正则表达式验证两位小数,主要是使用Regex类的IsMatch方法来判断指定的输入数字是否合法。本实例使用“^[0-9]+(.[0-9]{2})?$”表达式来验证小数的位数。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsDecimal(textBox1.Text.Trim()))
{ MessageBox.Show("请输入两位小数!!!", "提示"); }
else { MessageBox.Show("输入正确!!!!!", "提示"); }
}
public bool IsDecimal(string str_decimal)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_decimal, @"^[0-9]+(.[0-9]{2})?$");
}
本实例介绍如何使用正则表达式验证12个月份,主要是使用Regex类的IsMatch方法来判断输入的月份是否合法。一年有12个月份,本实例使用“^(0?[[1-9]|1[0-2]]$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsMonth(textBox1.Text.Trim()))
{ MessageBox.Show("输入月份不正确!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsMonth(string str_Month)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Month, @"^(0?[[1-9]|1[0-2]]$");
}
本实例介绍如何使用正则表达式验证每个月份的天数,主要是使用Regex类的IsMatch方法来判断输入的天数是否合法。本实例使用“^((0?[1-9])|((1|2)[0-9])|30|31)$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsDay(textBox1.Text.Trim()))
{ MessageBox.Show("输入天数不正确!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsDay(string str_day)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_day, @"^((0?[1-9])|((1|2)[0-9])|30|31)$");
}
本实例介绍如何使用正则表达式验证数字输入,主要是使用Regex类的IsMatch方法来判断输入的字符是否为数字。本实例使用“^[0-9]*$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsNumber(textBox1.Text.Trim()))
{ MessageBox.Show("只允许输入数字!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsNumber(string str_number)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_number, @"^[0-9]*$");
}
本实例介绍如何使用正则表达式验证密码长度,主要是使用Regex类的IsMatch方法来判断输入的密码是否合法。本实例要求密码长度为6~18位,使用“^/d{6,18}$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsPasswLength(textBox1.Text.Trim()))
{ MessageBox.Show("密码长度不正确/n"+"密码长度为6~18位!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsPasswLength(string str_Length)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Length, @"^/d{6,18}$");
}
本实例介绍如何使用正则表达式验证非零的正整数,主要是使用Regex类的IsMatch方法来判断输入的数字是否合法。本实例使用“^/+?[1-9][0-9]*$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsIntNumber(textBox1.Text.Trim()))
{ MessageBox.Show("只允许输入非零的正整数!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsIntNumber(string str_intNumber)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_intNumber, @"^/+?[1-9][0-9]*$");
}
本实例介绍如何使用正则表达式验证非零的负整数,主要是使用Regex类的IsMatch方法来判断输入的数字是否合法。本实例使用“^/-[1-9][0-9]*$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsBearIntNumber(textBox1.Text.Trim()))
{ MessageBox.Show("只允许输入非零的负整数!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsBearIntNumber(string str_intbearNumber)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_intbearNumber, @"^/-[1-9][0-9]*$");
}
本实例介绍如何使用正则表达式验证大写字母,主要是使用Regex类的IsMatch方法来判断输入的字母是否为大写字母。本实例使用“^[A-Z]+$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsUpChar(textBox1.Text.Trim()))
{ MessageBox.Show("只允许输入大写字母!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsUpChar(string str_UpChar)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_UpChar, @"^[A-Z]+$");
}
本实例介绍如何使用正则表达式验证小写字母,主要是使用Regex类的IsMatch方法来判断输入的字母是否为小写字母。本实例使用“^[a-z]+$”表达式来进行验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsLowChar(textBox1.Text.Trim()))
{ MessageBox.Show("只允许输入小写字母!!!", "提示"); }
else { MessageBox.Show("输入信息正确!!!!!", "提示"); }
}
public bool IsLowChar(string str_UpChar)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_UpChar, @"^[a-z]+$");
}
本实例介绍如何使用正则表达式检查字符串中重复出现的词,主要是使用Regex类的Macthes方法来检查字符串是否有重复的词出现。本实例用“/b(?<word>/w+)/s+(/k<word>)/b”表达式来验证。Macthes方法有多种重载形式,本实例所使用的方法声明如下:
public static MatchCollection Matches (
string input,
string pattern,
RegexOptions options
)
参数说明
l input:要搜索匹配项的字符串。
l Pattern:要匹配的正则表达式模式。
l Options:RegexOption枚举值的按位“或”组合。
l 返回值:搜索找到的Match对象的MatchCollection。
MatchCollection对象表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合。RegexOption枚举值及说明如表6.1所示。
表6.1 RegexOption枚举值及说明
枚 举 值 | 说 明 |
Compiled | 指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间 |
CultureInvariant | 指定忽略语言中的区域性差异。有关更多信息可以参见在RegularExpressions命名空间中执行不区分区域性的操作 |
ECMAScript | 为表达式启用符合ECMAScript的行为。该值只能与IgnoreCase、Multiline和Compiled值一起使用,与其他任何值一起使用均将导致异常 |
ExplicitCapture | 指定有效的捕获仅为形式为(?<name>...)的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法(?…)显得笨拙 |
IgnoreCase | 指定不区分大小写的匹配 |
IgnorePatternWhitespace | 消除模式中的非转义空白并启用由“#”标记的注释。但是,IgnorePatternWhitespace值不会影响或消除字符类中的空白 |
Multiline | 多行模式。更改“^”和“$”的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配 |
None | 指定不设置选项 |
RightToLeft | 指定搜索从右向左而不是从左向右进行 |
Singleline | 指定单行模式。更改点(.)的含义,使它与每一个字符匹配(而不是与除/n之外的每个字符匹配) |
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches (label1.Text, @"/b(?<word>/w+)/s+(/k<word>)/b", System.Text.RegularExpressions.RegexOptions.Compiled | System.Text. RegularExpressions.RegexOptions.IgnoreCase);
if (matches.Count != 0)//判断是否有查找结果
{
foreach (System.Text.RegularExpressions.Match match in matches)
{
string word = match.Groups["word"].Value;
MessageBox.Show(word.ToString(),"英文单词");
}
}
else { MessageBox.Show("没有重复的单词"); }
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "The the quick brown fox fox jumped over the lazy dog dog.";
}
本实例介绍如何使用正则表达式替换字符串,主要是使用Regex类的Replace方法来替换字符串。本实例使用“[A-Za-z]/*?”表达式来替换字符串中的字母。Replace方法从输入字符串中的第一个字符开始,用替换字符串替换由正则表达式定义的匹配的所有匹配项。此方法有多种重载形式,本实例所使用的方法声明如下:
public static string Replace (string input,string pattern,string replacement)
参数说明
l input:要修改的字符串。
l pattern:要匹配的正则表达式模式。
l replacement:替换字符串。
l 返回值:已修改的字符串。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
string strResult = System.Text.RegularExpressions.Regex.Replace(textBox1.Text, @"[A-Za-z]/*?", textBox2.Text);
MessageBox.Show("替换前字符:" + "/n" + textBox1.Text + "/n" + "替换的字符:" + "/n" + textBox2.Text + "/n" + "替换后的字符:" + "/n" + strResult,"替换");
}
本实例介绍如何使用正则表达式拆分字符串,主要是使用Regex类的Split方法来拆分字符串。运行程序,效果如图6.1所示。本实例使用“/d{3}-/d*”表达式来拆分字符串中的电话号。Replace方法在由正则表达式模式定义的位置处拆分输入字符串。此方法有多种重载形式,本实例所使用的方法声明如下:
public static string[] Split (string input,string pattern)
参数说明
l input:要拆分的字符串。
l pattern:要匹配的正则表达式。
l 返回值:字符串数组。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
foreach (string s in System.Text.RegularExpressions.Regex.Split(textBox1.Text,@"/d{3,4}-/d*"))
{
textBox2.Text+=s; //依次输出"甲乙丙"
}
}
本实例介绍如何使用正则表达式验证输入字母,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例使用“^[A-Za-z]+$”表达式来验证输入字符是否为字母。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsLetter(textBox1.Text.Trim()))
{ MessageBox.Show("输入的不是字母!!!","提示"); }
else { MessageBox.Show("输入的是字母!!!!!", "提示"); }
}
public bool IsLetter(string str_Letter)
{return System.Text.RegularExpressions.Regex.IsMatch(str_Letter,@"^[A-Za-z]+$");
}
本实例介绍如何使用正则表达式验证中文汉字输入,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例使用“^[/u4e00-/u9fa5],{0,}$”表达式来验证是否输入中文。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsChinese(textBox1.Text.Trim()))
{ MessageBox.Show("输入的不是中文!!!", "提示"); }
else { MessageBox.Show("输入正确!!!!!", "提示"); }
}
public bool IsChinese(string str_chinese)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_chinese, @"^[/u4e00-/u9fa5],{0,}$");
}
本实例介绍如何使用正则表达式验证输入字符串,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例要求输入字符至少为8位,使用“^.{8,}$” 表达式来验证。
主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (!IsLength(textBox1.Text.Trim()))
{ MessageBox.Show("至少输入8个字符!!!", "提示"); }
else { MessageBox.Show("输入正确!!!!!", "提示"); }
}
public bool IsLength(string str_Length)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_Length, @"^.{8,}$");
}