範例使用的是後端 .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 }