【C#拾遺】——正則表示式RegEx
前提
公司內部推行安全制度,要求密碼必須是八位以上,而且必有至少包含一個小寫或者大寫字母,數字,特殊字元,面對這樣的密碼,感覺領導也是夠操心的了啊。在公司小編真是閒啊,所以動手實現了一下,後來看了人家的程式碼,發現自己太low了。
我就不說那很low的做法了,使用了C#中正則表示式Regex直接進行驗證。直接看程式碼
using System.Text.RegularExpressions; string s = @" (?=.*[0-9]) #必須包含數字 (?=.*[a-zA-Z]) #必須包含小寫或大寫字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必須包含特殊符號 .{8,30} #至少8個字元,最多30個字元 "; Regex reg = new Regex(s, RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace); if (!reg.IsMatch(textBox1.Text.Trim())) { MessageBox.Show("密碼必須包含8個字元,\r\n並且至少有1個大寫字母、\r\n1個小寫字母、\r\n1個數字、\r\n1個特殊字元!"); textBox1.Focus(); return; }
使用C#中的正則表示式,一個輸入格式,兩行校驗程式碼,就這麼簡單的解決了這個問題。既然提到了正則表示式,那就好好的學習一下吧。
在C#中使用引入正則表示式
using System.Text.RegularExpressions;
之後就是關於正則表示式使用的一些基本語法了。
判斷是否匹配
在Regex物件中,可以使用Regex.IsMatch(string)方法。
如果返回值為false,字串中未包含要求匹配的內容,預設值為true,則證明字串中包含,符合條件。
關於匹配的問題還會涉及到Matches集合,再利用Matches集合進行獲取匹配次數,獲取匹配內容,以及捕獲正則表示式中的內容。
Regex.Matches("abc123Count").count;
RegexOptions方法,指的的列舉,其中列舉的有效值有很多,具體的內容推薦一篇部落格《C#正則表示式Regex類的用法》在這主要講解兩個,因為這段程式碼中用到的啊。
1、IgnorePatternWhitespace表示去掉模式中的非轉義空白,並啟用由#標記的註釋,這個注意到我們的程式碼中是有#標識的註釋的。
2、Multiline表示多行模式,改變元字元^和$的含義,它們可以匹配行的開頭和結尾,在C#中^和$是有特殊意義的,所以要考慮全面啊。
這是C#中正則表示式非常基礎的應用,其實之前在JavaScript中也學習過著這些內容,但是僅僅是學習過而已。大家都知道語言是相通,可是就是沒有學過真正的讓語言變得靈活起來,還是需要慢慢學習啊。
【總結】
關於C#中的學習真是學無止境,自己會的太少了,還是慢慢積累吧,把語言靈活運用起來,這才是目標啊。