範例使用的是後端 .NET 8 框架和 C# 語言,如有其他語言風格的需求,請再稍微轉換一下就好。

使用預編譯的正則表達式來提高效能

 1private static readonly Regex IdentityNoRegex = new(@"^[A-Za-z][12][0-9]{8}$", RegexOptions.Compiled);
 2private static readonly Regex ResidentPermitRegex = new(@"^[A-Za-z][ABCD89][0-9]{8}$", RegexOptions.Compiled);
 3private static readonly Regex EmailRegex = new(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", RegexOptions.Compiled);
 4private static readonly Regex PositiveIntegerRegex = new(@"^\+?[1-9][0-9]*$", RegexOptions.Compiled);
 5private static readonly Regex NegativeIntegerRegex = new(@"^\-[1-9][0-9]*$", RegexOptions.Compiled);
 6private static readonly Regex WebSiteRegex = new(@"^https?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?$", RegexOptions.Compiled);
 7private static readonly Regex MonthRegex = new(@"^(0?[1-9]|1[0-2])$", RegexOptions.Compiled);
 8private static readonly Regex DayRegex = new(@"^(0?[1-9]|[12][0-9]|3[01])$", RegexOptions.Compiled);
 9private static readonly Regex CellPhoneRegex = new(@"^09\d{8}$", RegexOptions.Compiled);
10private static readonly Regex IpAddressRegex = new(@"^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$", RegexOptions.Compiled);
11private static readonly Regex AmountRegex = new(@"^\d+(\.\d{1,2})?$", RegexOptions.Compiled);
12private static readonly Regex SpecialCharsRegex = new(@"[!@#\$%\^&\*\(\)_\+\-=\[\]{};':\\|,.<>\/?]", RegexOptions.Compiled);
13private static readonly Regex ChineseCharactersRegex = new(@"^[\u4e00-\u9fa5]+$", RegexOptions.Compiled);
14private static readonly Regex PasswordStrengthRegex = new(@"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$", RegexOptions.Compiled);
15private static readonly Regex AccountFormatRegex = new(@"^[A-Za-z][a-zA-Z0-9]{3,}$", RegexOptions.Compiled);
16private static readonly Regex RealNumberRegex = new(@"^-?\d+(\.\d+)?$", RegexOptions.Compiled);
17private static readonly Regex DateRegex = new(@"^\d{4}/\d{1,2}/\d{1,2}$", RegexOptions.Compiled);
18private static readonly Regex ContainsChineseRegex = new(@"[\u4e00-\u9fa5]", RegexOptions.Compiled);
19private static readonly Regex HexColorRegex = new(@"^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", RegexOptions.Compiled);
20private static readonly Regex WindowsPathRegex = new(@"^[a-zA-Z]:\\(([a-zA-Z0-9_\-]+\\)*([a-zA-Z0-9_\-]+)?)$", RegexOptions.Compiled);
21private static readonly Regex UnixPathRegex = new(@"^(/([a-zA-Z0-9_\-]+))+$", RegexOptions.Compiled);
22private static readonly Regex CreditCardRegex = new(@"^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11})$", RegexOptions.Compiled);
23private static readonly Regex MacAddressRegex = new(@"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$", RegexOptions.Compiled);
24private static readonly Regex UrlRegex = new(@"^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$", RegexOptions.Compiled);
25private static readonly Regex HtmlTagRegex = new(@"<[^>]+>", RegexOptions.Compiled);

Function

  1  /// <summary>
  2  /// 檢查是否為有效的台灣身分證字號或居留證號碼。
  3  /// </summary>
  4  /// <param name="inputString">要檢查的字串。</param>
  5  /// <returns>如果輸入是有效的身分證字號或居留證號碼,則返回 true;否則返回 false。</returns>
  6  public static bool IsIdentityOrResidentPermitNoLegit(string inputString)
  7  {
  8    if (string.IsNullOrWhiteSpace(inputString)) return false;
  9    return IdentityNoRegex.IsMatch(inputString) || ResidentPermitRegex.IsMatch(inputString);
 10  }
 11
 12  /// <summary>
 13  /// 檢查是否為有效的電子郵件地址。
 14  /// </summary>
 15  /// <param name="inputString">要檢查的字串。</param>
 16  /// <returns>如果輸入是有效的電子郵件地址,則返回 true;否則返回 false。</returns>
 17  public static bool IsEmail(string inputString)
 18  {
 19    return !string.IsNullOrWhiteSpace(inputString) && EmailRegex.IsMatch(inputString);
 20  }
 21
 22  /// <summary>
 23  /// 檢查是否為非零的正整數。
 24  /// </summary>
 25  /// <param name="inputString">要檢查的字串。</param>
 26  /// <returns>如果輸入是非零的正整數,則返回 true;否則返回 false。</returns>
 27  public static bool IsPositiveInteger(string inputString)
 28  {
 29    return !string.IsNullOrWhiteSpace(inputString) && PositiveIntegerRegex.IsMatch(inputString);
 30  }
 31
 32  /// <summary>
 33  /// 檢查是否為非零的負整數。
 34  /// </summary>
 35  /// <param name="inputString">要檢查的字串。</param>
 36  /// <returns>如果輸入是非零的負整數,則返回 true;否則返回 false。</returns>
 37  public static bool IsNegativeInteger(string inputString)
 38  {
 39    return !string.IsNullOrWhiteSpace(inputString) && NegativeIntegerRegex.IsMatch(inputString);
 40  }
 41
 42  /// <summary>
 43  /// 檢查是否為有效的網址。
 44  /// </summary>
 45  /// <param name="inputString">要檢查的字串。</param>
 46  /// <returns>如果輸入是有效的網址,則返回 true;否則返回 false。</returns>
 47  public static bool IsWebSite(string inputString)
 48  {
 49    return !string.IsNullOrWhiteSpace(inputString) && WebSiteRegex.IsMatch(inputString);
 50  }
 51
 52  /// <summary>
 53  /// 檢查是否為有效的月份(01-12)。
 54  /// </summary>
 55  /// <param name="inputString">要檢查的字串。</param>
 56  /// <returns>如果輸入是有效的月份,則返回 true;否則返回 false。</returns>
 57  public static bool IsMonth(string inputString)
 58  {
 59    return !string.IsNullOrWhiteSpace(inputString) && MonthRegex.IsMatch(inputString);
 60  }
 61
 62  /// <summary>
 63  /// 檢查是否為有效的日期(01-31)。
 64  /// </summary>
 65  /// <param name="inputString">要檢查的字串。</param>
 66  /// <returns>如果輸入是有效的日期,則返回 true;否則返回 false。</returns>
 67  public static bool IsDay(string inputString)
 68  {
 69    return !string.IsNullOrWhiteSpace(inputString) && DayRegex.IsMatch(inputString);
 70  }
 71
 72  /// <summary>
 73  /// 檢查是否為有效的手機號碼(台灣)。
 74  /// </summary>
 75  /// <param name="inputString">要檢查的字串。</param>
 76  /// <returns>如果輸入是有效的手機號碼,則返回 true;否則返回 false。</returns>
 77  public static bool IsCellPhone(string inputString)
 78  {
 79    return !string.IsNullOrWhiteSpace(inputString) && CellPhoneRegex.IsMatch(inputString);
 80  }
 81
 82  /// <summary>
 83  /// 檢查是否為有效的IP地址。
 84  /// </summary>
 85  /// <param name="inputString">要檢查的字串。</param>
 86  /// <returns>如果輸入是有效的IP地址,則返回 true;否則返回 false。</returns>
 87  public static bool IsValidIp(string inputString)
 88  {
 89    if (string.IsNullOrWhiteSpace(inputString)) return false;
 90
 91    if (!IpAddressRegex.IsMatch(inputString)) return false;
 92
 93    string[] splitValues = inputString.Split('.');
 94    return splitValues.All(r => byte.TryParse(r, out byte tempForParsing));
 95  }
 96
 97  /// <summary>
 98  /// 檢查是否為有效的金額格式(最多兩位小數)。
 99  /// </summary>
100  /// <param name="inputString">要檢查的字串。</param>
101  /// <returns>如果輸入是有效的金額格式,則返回 true;否則返回 false。</returns>
102  public static bool IsAmount(string inputString)
103  {
104    return !string.IsNullOrWhiteSpace(inputString) && AmountRegex.IsMatch(inputString);
105  }
106
107  /// <summary>
108  /// 檢查字串中是否含有特殊字符。
109  /// </summary>
110  /// <param name="inputString">要檢查的字串。</param>
111  /// <returns>如果輸入包含特殊字符,則返回 true;否則返回 false。</returns>
112  public static bool ContainsSpecialChars(string inputString)
113  {
114    return !string.IsNullOrWhiteSpace(inputString) && SpecialCharsRegex.IsMatch(inputString);
115  }
116
117  /// <summary>
118  /// 檢查是否全為漢字。
119  /// </summary>
120  /// <param name="inputString">要檢查的字串。</param>
121  /// <returns>如果輸入全為漢字,則返回 true;否則返回 false。</returns>
122  public static bool IsChineseCharacters(string inputString)
123  {
124    return !string.IsNullOrWhiteSpace(inputString) && ChineseCharactersRegex.IsMatch(inputString);
125  }
126
127  /// <summary>
128  /// 檢查密碼強度是否符合要求(至少8位,包含字母和數字)。
129  /// </summary>
130  /// <param name="inputString">要檢查的字串。</param>
131  /// <returns>如果輸入符合密碼強度要求,則傳回 true;否則傳回 false。</returns>
132  public static bool IsValidPasswordStrength(string inputString)
133  {
134    return !string.IsNullOrWhiteSpace(inputString) && PasswordStrengthRegex.IsMatch(inputString);
135  }
136
137  /// <summary>
138  /// 檢查帳號格式是否正確(以英文字母開頭,後面至少三個字母或數字)。
139  /// </summary>
140  /// <param name="inputString">要檢查的字串。</param>
141  /// <returns>如果輸入符合帳號格式要求,則傳回 true;否則傳回 false。</returns>
142  public static bool IsValidAccountFormat(string inputString)
143  {
144    return !string.IsNullOrWhiteSpace(inputString) && AccountFormatRegex.IsMatch(inputString);
145  }
146
147  /// <summary>
148  /// 檢查是否為有效的實數。
149  /// </summary>
150  /// <param name="inputString">要檢查的字串。</param>
151  /// <returns>如果輸入是有效的實數,則傳回 true;否則傳回 false。</returns>
152  public static bool IsRealNumber(string inputString)
153  {
154    return !string.IsNullOrWhiteSpace(inputString) && RealNumberRegex.IsMatch(inputString);
155  }
156
157  /// <summary>
158  /// 檢查是否為有效的日期格式。
159  /// </summary>
160  /// <param name="inputString">要檢查的字符串。</param>
161  /// <returns>如果輸入符合日期格式要求,則返回 true;否則返回 false。</returns>
162  public static bool IsValidDateFormat(string inputString)
163  {
164    if (!string.IsNullOrWhiteSpace(inputString) && DateRegex.IsMatch(inputString))
165    {
166      return DateTime.TryParse(inputString, out _);
167    }
168
169    return false;
170  }
171
172  /// <summary>
173  /// 檢查字符串中是否含有中文字符。
174  /// </summary>
175  /// <param name="inputString">要檢查的字符串。</param>
176  /// <returns>如果輸入包含中文字符,則返回 true;否則返回 false。</returns>
177  public static bool ContainsChineseCharacter(string inputString)
178  {
179    return !string.IsNullOrWhiteSpace(inputString) && ContainsChineseRegex.IsMatch(inputString);
180  }
181
182  /// <summary>
183  /// 驗證是否為有效的十六進制顏色代碼。
184  /// </summary>
185  /// <param name="inputString">要檢查的字符串。</param>
186  /// <returns>如果輸入有效的十六進制顏色代碼,則返回 true;否則返回 false。</returns>
187  public static bool IsValidHexColor(string inputString)
188  {
189    return !string.IsNullOrWhiteSpace(inputString) && HexColorRegex.IsMatch(inputString);
190  }
191
192  /// <summary>
193  /// 驗證是否為有效的 Windows 文件路徑。
194  /// </summary>
195  /// <param name="inputString">要檢查的字符串。</param>
196  /// <returns>如果輸入有效的 Windows 文件路徑,則返回 true;否則返回 false。</returns>
197  public static bool IsValidWindowsPath(string inputString)
198  {
199    return !string.IsNullOrWhiteSpace(inputString) && WindowsPathRegex.IsMatch(inputString);
200  }
201
202  /// <summary>
203  /// 驗證是否為有效的 Unix/Linux 文件路徑。
204  /// </summary>
205  /// <param name="inputString">要檢查的字符串。</param>
206  /// <returns>如果輸入有效的 Unix/Linux 文件路徑,則返回 true;否則返回 false。</returns>
207  public static bool IsValidUnixPath(string inputString)
208  {
209    return !string.IsNullOrWhiteSpace(inputString) && UnixPathRegex.IsMatch(inputString);
210  }
211
212  /// <summary>
213  /// 驗證是否為有效的信用卡號碼。
214  /// </summary>
215  /// <param name="inputString">要檢查的字符串。</param>
216  /// <returns>如果輸入有效的信用卡號碼,則返回 true;否則返回 false。</returns>
217  public static bool IsValidCreditCardNumber(string inputString)
218  {
219    return !string.IsNullOrWhiteSpace(inputString) && CreditCardRegex.IsMatch(inputString);
220  }
221
222  /// <summary>
223  /// 驗證是否為有效的 MAC 地址。
224  /// </summary>
225  /// <param name="inputString">要檢查的字符串。</param>
226  /// <returns>如果輸入有效的 MAC 地址,則返回 true;否則返回 false。</returns>
227  public static bool IsValidMacAddress(string inputString)
228  {
229    return !string.IsNullOrWhiteSpace(inputString) && MacAddressRegex.IsMatch(inputString);
230  }
231
232  /// <summary>
233  /// 驗證是否為有效的 URL(包括協議和可選的端口)。
234  /// </summary>
235  /// <param name="inputString">要檢查的字符串。</param>
236  /// <returns>如果輸入有效的 URL 字符,則返回 true;否則返回 false。</returns>
237  public static bool IsValidUrl(string inputString)
238  {
239    return !string.IsNullOrWhiteSpace(inputString) && UrlRegex.IsMatch(inputString);
240  }
241
242  /// <summary>
243  /// 檢查字符串是否包含 HTML 標簽。
244  /// </summary>
245  /// <param name="inputString">要檢查的字符串。</param>
246  /// <returns>如果輸入包含 HTML 標簽字符,則返回 true;否則返回 false。</returns>
247  public static bool ContainsHtmlTag(string inputString)
248  {
249    return !string.IsNullOrWhiteSpace(inputString) && HtmlTagRegex.IsMatch(inputString);
250  }