限制字符串輸入――正則表達式(VB.NET)
來源:程序員人生 發布時間:2014-09-17 09:48:56 閱讀次數:2649次
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 style="font-family:KaiTi_GB2312;">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、結束語
在程序員日常工作中,數據處理占據了相當的比重。而所有的數據之中文本又占據了相當的比重。文本能夠被人理解、具有良好的透明性,利于系統開發、測試和維護等就必需要有一定規律遵循一種規則,而正則表達式正是我們所需要的,它提供給我們強大的字符串處理的能力。
轉載請注明出處:http://blog.csdn.net/zlts000/article/details/38021335
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈