若要在 VB.NET 中檢查一個字符串是否符合特定的格式要求,用一個 IsValidFormat 函數的範例。這個函數用在驗證一個字符串是否同時滿足以下條件:
包含至少一個數字 (\d)。
包含至少一個小寫字母 ([a-z])。
包含至少一個大寫字母 ([A-Z])。
包含特定的符號,限定為 _ @ # ! ^ % 中的至少一個。
長度在8到30個字符之間。
這裡的正則表達式 “^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\_\@\#\!\^\%]).{8,30}$” 中,使用了正向預查(Positive Lookahead,(?=…))來確保字符串滿足上述所有條件。每個預查確保字符串中至少存在一個符合其條件的字符。最後的 .{8,30} 確保整體字符串的長度在8到30個字符之間。
函數返回一個布爾值(Boolean),如果輸入字符串滿足所有上述條件則返回 True,否則返回 False。
這個函數可以用於表單驗證,確保用戶輸入的密碼或其他重要信息符合安全要求。
若要將檢查的符號限制為 _ @ # ! ^ %,正則表達式中的相關部分 (?=.*[\\_\@\#\!\^\%]) 正確地實現了這一點,其中 \\ 是對反斜線的轉義(在這個情況下可能是多餘的,除非您確實需要匹配反斜線字符),其餘符號在方括號內不需要特別的轉義。這樣確保了只有當字符串中至少包含這些特定符號中的一個時,正則表達式的這一部分才會匹配成功。
1 2 3 4 5 6 7 8 |
Private Function IsValidFormat(ByVal strValue As String) As Boolean '需包含英文字母大寫及小寫、數字及符號(限用:_ @ # ! ^ %) '長度8~30個字 Dim pattern As String = "^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[_@#!^%]).{8,30}$" Dim _match As Match = Regex.Match(strValue, pattern, RegexOptions.IgnoreCase) Return _match.Success End Function |