1. 程式人生 > >【正則表示式】-基礎

【正則表示式】-基礎

前言

   之前總是能看到好多這樣的程式碼 ^([0-9]\d{16}[09Xx]|[1-9]\d{14})$ 斜槓加數字加字母,看起來都很頭疼。於是就上網找資料瞭解了一下,也算是一個小小的入門。

What

   正則表示式:又稱規則表示式。(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),電腦科學的一個概念。正則表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。

   正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。

常用語法

  • . 小數點,可能有點看不清楚。它表示任意的單個字元
  • [ ] 字元組,表示在字元組中羅列出來的字元,任意取單個
  • | 表示 “或”的意思,“或” 的優先順序最低
  • * 表示限定前面的表示式出現0此或者多次
  • + 表示一次或者多次。至少得出現一次
  • 表示可出現0次或者1次
  • [0-9]{4,} 表示最少出現4次,最多不限
  • [0-9]{4,9} 表示最少出現4次,最多出現9次
  • ^ 表示開始 ^h 表示以h開頭
  • $ 表示結尾 hh$ 表示以hh結尾
  • \d 表示0-9
  • \D
    表示除數字以外
  • \w 表示[a-z0-9A-Z]
  • \W 表示除了[a-z0-9A-Z]以為
  • \s 表示不可見的字元 比如空格
  • \S 表示除了不可見的字元以外的字元

Regex常用方法

Regex.IsMatch();         //用來判斷給定的字串是否匹配某個正則表示式      
Regex.Match();           //用來從給定的字串中按照正則表示式的要求提取一個匹配的字串
Regex.Matches();         //用來從給定的字串中按照正則表示式的要求提取所有匹配的字串
Regex.Replace():         //替換所有正則表示式匹配的字串為另外一個字串

例子

	//判斷是否在10-25之間,包含10和25
            while (true)
            {
                Console.WriteLine("請輸入一個10(含)-25(含)之間的任何一個數字");
                string n = Console.ReadLine();
                bool b = Regex.IsMatch(n, "^(1[0-9]|2[0-5])$");
                Console.WriteLine(b);
            }
	//判斷一個身份證是否正確
            //如果15位都是數字
            //如果18位,前17位是數字,後一位可能是數字也可能是x
            while (true)
            {
                Console.WriteLine("輸入身份證號:");
                string idNo = Console.ReadLine();
                Console.WriteLine(Regex.IsMatch(idNo, @"^([1-9]\d{16}[0-9Xx]|[1-9]\d{14})$"));
            }
	 //提取數字
            string msg = "大210家57好,132好314一9嗨91021喲244";
            MatchCollection matches = Regex.Matches(msg, "[0-9]+");
            foreach (Match item in matches)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();

總結

   正則表示式就先總結到這,紙上談兵是沒有用的,要去實踐,獲取計算機思維。