iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
Modern Web

零經驗ASP .NET Core 30 DAY全紀錄系列 第 27

零經驗 .NET Core 30 DAY----- Day27 利用Regular Expression做密碼原則判斷

  • 分享至 

  • xImage
  •  

鐵人賽第27天,我的最後一天連假/images/emoticon/emoticon02.gif,肉還沒烤,不過終於來到第27天,今天要來紀錄一下,我看了很久還是看沒有很懂的Regular Expression,那麼就開始吧。


Regular Expression

主要功能就是剖析字串格式,比對字串是不是有符合正確的格式。

常見的實際運用:判斷是否符合資料格式

一、身分證字號判斷

Regex regex = new Regex("^[A-Z][12][0-9]{8}");
Console.WriteLine(regex.IsMatch(input));

規則:
^表示開頭
(上面的^表示開頭必須是大寫英文字母)(接續是數字1或2)(後面是0-9,且共8碼)

二、電子郵件判斷

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})(\\]?)$");
Console.WriteLine(regex.IsMatch(input));

\在c#中需打兩次

常見的實際運用:刪除、切割特定字串

一、刪除特定字串(ex稱謂)

string pattern = "先生? |小姐?";
string[] names = { "王小小先生", "林大大小姐","王中忠" };
foreach (string name in names)
     Console.WriteLine(Regex.Replace(name, pattern, String.Empty));

印出結果:
https://ithelp.ithome.com.tw/upload/images/20201003/20130030DGLmAvToLX.png

二、切割特定字串

string pattern = "先生? |小姐? |,";
string name ="王小小先生,林大大小姐,王中忠";
string[] names = Regex.Split(name, pattern);
Console.WriteLine(names[0] + " " + names[1] + " " + names[2]);

印出結果:https://ithelp.ithome.com.tw/upload/images/20201003/20130030UH4GHSnkwl.png


今日系統實作
我想要達到的密碼原則如下:

  1. 長度至少12碼,不得長於50碼
  2. 必須包含英文大小寫和數字
Regex regex = new Regex("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{12,50}$");

結果
輸入不合原則的密碼。
https://ithelp.ithome.com.tw/upload/images/20201003/20130030ifwGsqjZtt.png
https://ithelp.ithome.com.tw/upload/images/20201003/20130030JNVSVNwOqG.png
https://ithelp.ithome.com.tw/upload/images/20201003/20130030ayD1xyFokj.png
以上皆不符合原則,會跳出紅色訊息。
https://ithelp.ithome.com.tw/upload/images/20201003/20130030doibSwlnS0.png
輸入符合原則的密碼。
https://ithelp.ithome.com.tw/upload/images/20201003/20130030IP3yOe9GYl.png
會顯示註冊成功。
https://ithelp.ithome.com.tw/upload/images/20201003/20130030sUuBS45yl7.png


day27心得:
我還是覺得很難,可能要經常使用會比較懂在幹嘛吧,我又要去家庭聚餐了,大家掰掰。


上一篇
零經驗 .NET Core 30 DAY----- Day26 HashAlgorithm做密碼加密&byte[]和string的轉換
下一篇
零經驗 .NET Core 30 DAY----- Day28 實作功能[座位管理系統-完善各個洞洞]
系列文
零經驗ASP .NET Core 30 DAY全紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言