using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
//正则表达式的概念
//检查,检索,替换那些符合某个模式的文本
//屏蔽或替换用户输入的“非法”字符串。
namespace A09_RegularExpression
{
class Demo2
{
// ^ "定位"元字符,表示开头
// $ "定位"元字符,表示结尾
// . 表示任意字符
// \d 表示数字
// \w 表示字母、数字、下划线、汉字。
// * 表示某个元字符规则重复0-N次
// [] "包含"与[^]"非"元字符
// {n} 匹配前面的字符n次
// {n,} 匹配前面的字符n次或多于n次
// {n,m} 匹配前面的字符n到m次
// ? 重复0次或者1次
// + 重复1次或者多次
// * 表示零到多个元字符,或表示重复零次或者更多次
// | 将两个匹配条件进行逻辑“或”运算
// () 用小括号来制定子表达式
//开始位置的元字符 ^
public void Test1()
{
string str = "Hello everyone ! ";
string strResult = Regex.Replace(str, "^", "23333 ");
Console.WriteLine(strResult);
}
//结束位置的元字符 $
public void Test2()
{
string str = "Hello everyone ! ";
string strResult = Regex.Replace(str, "$", "23333 ");
Console.WriteLine(strResult);
}
//以数字开头,以数字结尾,且中间有任意多个数字
public void Test3()
{
string str = "12345a678";
bool isMatch = JudgeNumber(str);
if (isMatch)
{
Console.WriteLine("全部都是数字");
}
else
{
Console.WriteLine("存在非数字字符");
}
}
//判断字符串是否全部由数字字符组成
private bool JudgeNumber(string strNumber)
{
string strPattern = @"^\d*$";
return Regex.IsMatch(strNumber, strPattern);
}
//验证用户名,字母,数字,汉字,下划线组成。
public void Test4()
{
string str = "CNLithium_523";
if (JudgeUserName(str))
{
Console.WriteLine("用户名合法");
}
else
{
Console.WriteLine("用户名中存在非法字符");
}
}
private bool JudgeUserName(string strUser)
{
string strPattern = @"^\w*$";
return Regex.IsMatch(strUser, strPattern);
}
//[]"包含"与[^]"非"元字符
//字符串替换
public void Test5()
{
string strResult = null;
string strContent = "Hello EveryOne !!!! Son of Bitch !!!!";
string strPattern = @"Son of Bitch";
strResult = Regex.Replace(strContent, strPattern, "***");
Console.WriteLine(strResult);
}
public void Test6()
{
string strContent = "bck";
if (JudgeMessage(strContent))
{
Console.WriteLine("信息中包含非法字符");
}
else
{
Console.WriteLine("信息合法");
}
}
private bool JudgeMessage(string strMessage)
{
string strPattern = @"[a]";
return Regex.IsMatch(strPattern, strMessage);
}
//全部是数字且5-12位之间
public void Test7()
{
string qq1 = "5761";
string qq2 = "59847dbv";
string qq3 = "5984758874";
string strPattern = @"^\d{5,12}$";
Console.WriteLine(Regex.IsMatch(qq1, strPattern));
Console.WriteLine(Regex.IsMatch(qq2, strPattern));
Console.WriteLine(Regex.IsMatch(qq3, strPattern));
}
//提取字母和数字
public void Test8()
{
string str = "56484657#$^$&adfg$!#564";
string strPattern = @"\d|[a-z]"; //整数或者字母a-z
MatchCollection CollArray = Regex.Matches(str, strPattern);
foreach (Match item in CollArray)
{
Console.Write(item);
}
Console.WriteLine("");
}
//提取“标签”
public void Test9()
{
string[] strTagArray;
string strTag = "C#,ProgramLaugrage;Toturial.RegularExpression";
string strPattarn = @"[,]|[;]|[.]";//包含,或者;或者.
strTagArray = Regex.Split(strTag, strPattarn);
foreach (var item in strTagArray)
{
Console.WriteLine(item);
}
}
//()进行分组
public void Test10()
{
string str = "213abllab22哈哈哈";
//模式定义,(ab+两个任意字符)X 2
string strPattern = @"(ab\w{2}){2}";
Console.WriteLine(Regex.Replace(str, strPattern, "***"));
}
/// <summary>
/// 验证电话号码是否合法
/// (010)-12345678
/// 010-12345678
/// 01012345678
/// </summary>
public void Test11()
{
string strTel1 = "(010)-12345678";
string strTel2 = "010-12345678";
string strTel3 = "01012345678";
string strTel4 = "010)-12345678";
string strTel5 = "(010)1234-5678";
string strTel6 = "010-123-45678";
string strTel7 = "010-1234adfe";
//定义模式
string strPattern = @"\(0\d{2,3}\)[-]?\d{7,8}|^0\d{2,3}[-]?\d{7,8}$";
Console.WriteLine("Tel1 = " + Regex.IsMatch(strTel1, strPattern));
Console.WriteLine("Tel2 = " + Regex.IsMatch(strTel2, strPattern));
Console.WriteLine("Tel3 = " + Regex.IsMatch(strTel3, strPattern));
Console.WriteLine("Tel4 = " + Regex.IsMatch(strTel4, strPattern));
Console.WriteLine("Tel5 = " + Regex.IsMatch(strTel5, strPattern));
Console.WriteLine("Tel6 = " + Regex.IsMatch(strTel6, strPattern));
Console.WriteLine("Tel7 = " + Regex.IsMatch(strTel7, strPattern));
}
static void Main(string[] args)
{
Demo2 obj = new Demo2();
obj.Test1();
obj.Test2();
obj.Test3();
obj.Test4();
obj.Test5();
obj.Test6();
obj.Test7();
obj.Test8();
obj.Test9();
obj.Test10();
obj.Test11();
}
}
//常用正则表达式
/*
* 效验密码强度 ^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,20}$ 必须包含大写字母小写字母和数字 8-20位
* 效验中文 [\u4e00-\u9fa5]
* 判断一个合法的IP4地址 ^((25[0-5]|2[0-4]\d|[1]{1}\d{1}\d{1}|[1-9]{1}\d{1}|\d{1})($|(?!\.$)\.)){4}$
* 效验E-mail地址 ^\w+([-_.]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
* 效验身份证号码 ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
* 效验金额 ^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$
* 效验日期 ^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$
* 效验手机号 ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$
*/
}
A09_正则表达式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.