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_正則表達式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.