0%

C# —— Regular Expression(規則運算式)

使用規則運算式來處理文字是以規則運算式引擎為核心,由.NET Framework中的命名空間System.Text.RegularExpressions.來表示,如要使用的話需用using來加在開頭,屬於Regex類別。

以下先來介紹規則運算式的入門

1
2
3
4
5
6
7
[]:用來定義可接受的字元
[a-z] : 可接受a~z等26個"小寫"字母
[A-Z] : 可接受A~Z等26個"大寫"字母
[0-9] : 只接受0~9等十個數字
[a-zA-Z0-9] : 可接受所有大小寫字母及數字
除了以上用法,也可以直接指定可接受的字元,例如[acfgh]表示可以接受a、c、f、g、h等五個小寫字母,另外,^符號表示"不接受"的意思。


1
2
3
4
5
6
{}: 用來定義必須輸入的字元數
{5} : 必須輸入5個字元
{5,10} : 必須輸入5~10個字元
[a-z]{5}:表示必須輸入5個a~z中的5個小寫字母
[a-zA-Z0-9]{5~10} : 表示必須輸入5~10個大小寫字母或數字


1
2
3
4
//.符號 : 表示任意字元
//.{5~10}:表示可接受5~10個任意字元
//|符號:表示或的意思
[a-z]{5}|[A-Z][5] //必須輸入5個小寫或大寫字母,而不是5大小寫混合字母

綜合以上假如我們要比對身分證號碼,我們知道身分證是由1個AZ的大寫英文字母+上1個12的數字來判斷性別+上8個0~9的數字,那我們可以這樣寫

1
[A-Z]{1}[1-2]{1}[0-9]{8}

或是 台灣的郵遞區號,郵遞區號可能是3個數字或是5個數字

1
([0-9]{3}|[0-9]{5})  //加上()增加可讀性,因為是3個或是5個所以用|表示或

或是手機號碼09開頭後面接著8個0~9的數字

1
^09[0-9]{8}

想試試看你自訂的正規式是否正確可以到 這裡

錨點(位置)

1
2
^符號:表示從字串開頭開始比對
$符號:比對必須發生在字串結尾

Regex類別的方法

isMatch(想判斷的字串,自訂的正規式):判斷輸入文字中是否存在規則運算式模式

1
2
3
string item = "123";
bool answer = Regex.IsMatch(item, @"^\d{3}");//判斷是否為3個任意數字,@避免跳脫字元
Response.Write(answer); //true

參考:

ASP.NET專題實務(I):C#入門實戰

文章若有錯誤或想交流,還不吝嗇給予指教哦