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

謝駿辰
Jason的網頁筆記
Jun 10, 2020
Photo by Kelly Sikkema on Unsplash

網站已搬家,請到新網站支持我呦> https://jasonhsieh-web.github.io/

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

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

[]:用來定義可接受的字元
[a-z] : 可接受a~z等26個"小寫"字母
[A-Z] : 可接受A~Z等26個"大寫"字母
[0-9] : 只接受0~9等十個數字
[a-zA-Z0-9] : 可接受所有大小寫字母及數字
除了以上用法,也可以直接指定可接受的字元,例如[acfgh]表示可以接受a、c、f、g、h等五個小寫字母,另外,^符號表示"不接受"的意思。
{}: 用來定義必須輸入的字元數
{5} : 必須輸入5個字元
{5,10} : 必須輸入5~10個字元
[a-z]{5}:表示必須輸入5個a~z中的5個小寫字母
[a-zA-Z0-9]{5~10} : 表示必須輸入5~10個大小寫字母或數字
.符號 : 表示任意字元
.{5~10}:表示可接受5~10個任意字元
|符號:表示或的意思
[a-z]{5}|[A-Z][5] : 必須輸入5個小寫或大寫字母,而不是5大小寫混合字母

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

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

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

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

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

^09[0-9]{8}

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

錨點(位置)

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

Regex類別的方法

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

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

參考資料

ASP.NET 專題實務I

--

--