限製字符串輸入——正則表達式(VB.NET)
1、概述
在做機房收費係統的時候,幾乎所有的窗體上都存在著文本框或者組合框,當用戶進行操作的時候,首先要判斷是否為空,然後再對各種屬性進行判斷,比如;卡號、學號、金額等隻能輸入數字,有些信息隻能輸入字母,或者將一些信息的輸入設為隻能輸入數字和字母。舉個例子,我們注冊郵箱的時候,就會有一些特定字符的設置:
下麵是163郵箱注冊的頁麵
在我們做機房收費係統時,如果用常規的方法,直接用ASCII碼進行設置的話,就感覺有點複雜,現在我們一起來認識認識程序員必備的七種技能之一的“正則表達式”。
2、什麼是正則表達式?
首先看一張漫畫:
正則表達式就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。
舉個例子:隻能輸入數字:“^[0-9]*$”。
隻能輸入漢字:“^[\u4e00-\u9fa5]{0,}$”。
隻能輸入由26個英文字母組成的字符串:“^[A-Za-z]+$”。
3、怎麼使用正則表達式?
下麵就一起來看看怎麼使用它。
咱們以添加新用戶的窗體為例:
Public Const C_REGULAR_LenNum = "^[A-Za-z0-9]+$" '隻能輸入由數字和26個英文字母組成的字符 Public Const C_REGULAR_NumLimit = "^\\d{6,16}$" '隻能輸入6至16位的數字。
''' <summary> ''' 檢測輸入字符串是否匹配正則表達式項 ''' </summary> ''' <param name="strPattern">正則表達式項</param> ''' <param name="TextReg">輸入字符串</param> ''' <returns>返回結果是否匹配</returns> ''' <remarks><span >2014年8月28日16:02:20</span></remarks> Public Function funCheckRegular(ByVal strPattern As String, TextReg As String) Return Regex.IsMatch(TextReg, strPattern) End Function ''' <summary> ''' 具體執行的判斷函數,判斷是否輸入數字 ''' </summary> ''' <param name="arrayControl">結構體數組</param> ''' <returns>True則表示匹配,false則不匹配</returns> ''' <remarks>2014-07-09 10:30:24</remarks> Public Function CheckRegular(ByVal arrayControl() As Term, ByVal strPattern As String, Warning As String) As Boolean Dim termControl As Term '聲明一個Term類型變量termControl '遍曆結構體數組中的所有元素,如果控件文本輸入不合法,則給出相應返回值 For Each termControl In arrayControl '遍曆結構體數組中所有元素 If TypeOf termControl.controlSub Is TextBox Then '判斷控件是否為文本框 If termControl.controlSub.Text.Trim <> "" Then '判斷文本框內容是否為空,不為空往下執行 If funCheckRegular(strPattern, termControl.controlSub.Text) = False Then MessageBox.Show(termControl.strText + "欄 - -!" + Warning, "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Information) termControl.controlSub.Focus() '為空控件得到焦點 Return False Exit Function End If End If End If Next Return True End Function
下麵的代碼是在界麵層(UI)如何調用:
Public Sub RdimStrNum() ReDim Preserve arrayControl(0) '重定義數組維數 '初始化數組 arrayControl(0) = New Term(txtUserID, "用戶名") End Sub Public Sub RdimNum() ReDim Preserve arrayControl(1) '重定義數組維數 '初始化數組 arrayControl(0) = New Term(txtUserPWD, "密碼") arrayControl(1) = New Term(txtConfirm, "確認密碼") End Sub
'判斷用戶輸入是否合法(數字和字母) Call RdimStrNum() Dim strPattern = C_REGULAR_LenNum '正則表達式 Dim Warning As String = "隻能輸入由數字和26個英文字母組成的字符" If CheckRegular(arrayControl, strPattern, Warning) = False Then Exit Sub End If '判斷用戶輸入是否合法(數字) Call RdimNum() Dim pattern = C_REGULAR_NumLimit '正則表達式 Dim Warn As String = "請輸入6至16位數字" If CheckRegular(arrayControl, pattern, Warn) = False Then Exit Sub End If
3、結束語
在程序員日常工作中,數據處理占據了相當的比重。而所有的數據之中文本又占據了相當的比重。文本能夠被人理解、具有良好的透明性,利於係統開發、測試和維護等就必需要有一定規律遵循一種規則,而正則表達式正是我們所需要的,它提供給我們強大的字符串處理的能力。
轉載請注明出處:https://blog.csdn.net/zlts000/article/details/38021335
最後更新:2017-04-03 05:40:04