C#不用正則校驗密碼(附贈正則表達式)

羣聊

  • 羣友A問:有沒有方法可以判斷字符串裏面帶不帶標點符號啊?
  • 羣友B問:需求是什麼?
  • 羣友A說:想要密碼校驗,網上大部分都是正則。
  • 羣友A說:密碼規則是包含大小寫和數字、特殊符號,還有Length>=8。

我直接在LINQPad手擼基於ASCII碼錶的校驗密碼方法發到羣裏。
該實現邏輯,幾乎任何編程語言都通用,可借鑑

工具類

public static class Utils
{
	public static bool ValidPassword(string password, int minLength = 8, int maxLength = 20)
	{
		if (string.IsNullOrEmpty(password) || password.Length < minLength || password.Length > maxLength)
		{
			return false;
		}

		bool hasLower = false;
		bool hasUpper = false;
		bool hasNumber = false;
		bool hasSymbol = false;
		foreach (ushort item in password)
		{
			if (item < 33 || item > 126)
			{
				return false;
			}

			if (item >= 48 && item <= 57)
			{
				hasNumber = true;
				continue;
			}

			if (item >= 65 && item <= 90)
			{
				hasUpper = true;
				continue;
			}

			if (item >= 97 && item <= 122)
			{
				hasLower = true;
				continue;
			}

			hasSymbol = true;
		}

		return hasLower && hasUpper && hasNumber && hasSymbol;
	}
}

測試代碼

class Program
{
	static void Main(params string[] args)
	{
		TestValidPassword();
	}

	static void TestValidPassword()
	{
		Console.WriteLine(Utils.ValidPassword("Abcd1234.!"));
		Console.WriteLine(Utils.ValidPassword("abcd1234."));
		Console.WriteLine(Utils.ValidPassword("abcd12345"));
		Console.WriteLine(Utils.ValidPassword("abced!.-/*"));
		Console.WriteLine(Utils.ValidPassword("Abcd1234我"));
	}
}

附贈正則表達式

密碼規則:包含 數字,大小寫,特殊字符^%&',;=?$\",長度8~20位。
其中x22是雙引號"的轉義。

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^%&',;=?$\x22])[A-Za-z0-9^%&',;=?$\x22]{8,20}$

ASCII碼錶

ASCII 控制字符 (字符編碼: 0-31)

ASCII碼錶中,前32個字符是不能用於打印控制的編碼,而是用於控制像打印機一樣的外圍設備。

十進制 DEC 八進制 OCT 十六進制 HEX 二進制 BIN 符號 Symbol HTML實體編碼 中文解釋 Description 英文解釋 Description
0 000 00 00000000 NUL &#000; 空字符 Null char
1 001 01 00000001 SOH &#001; 標題開始 Start of Heading
2 002 02 00000010 STX &#002; 正文開始 Start of Text
3 003 03 00000011 ETX &#003; 正文結束 End of Text
4 004 04 00000100 EOT &#004; 傳輸結束 End of Transmission
5 005 05 00000101 ENQ &#005; 詢問 Enquiry
6 006 06 00000110 ACK &#006; 收到通知 Acknowledgment
7 007 07 00000111 BEL &#007; Bell
8 010 08 00001000 BS &#008; 退格 Back Space
9 011 09 00001001 HT &#009; 水平製表符 Horizontal Tab
10 012 0A 00001010 LF &#010; 換行鍵 Line Feed
11 013 0B 00001011 VT &#011; 垂直製表符 Vertical Tab
12 014 0C 00001100 FF &#012; 換頁鍵 Form Feed
13 015 0D 00001101 CR &#013; 回車鍵 Carriage Return
14 016 0E 00001110 SO &#014; 移出 Shift Out / X-On
15 017 0F 00001111 SI &#015; 移入 Shift In / X-Off
16 020 10 00010000 DLE &#016; 數據鏈路轉義 Data Line Escape
17 021 11 00010001 DC1 &#017; 設備控制 1 Device Control 1 (oft. XON)
18 022 12 00010010 DC2 &#018; 設備控制 2 Device Control 2
19 023 13 00010011 DC3 &#019; 設備控制 3 Device Control 3 (oft. XOFF)
20 024 14 00010100 DC4 &#020; 設備控制 4 Device Control 4
21 025 15 00010101 NAK &#021; 拒絕接收 Negative Acknowledgement
22 026 16 00010110 SYN &#022; 同步空閒 Synchronous Idle
23 027 17 00010111 ETB &#023; 傳輸塊結束 End of Transmit Block
24 030 18 00011000 CAN &#024; 取消 Cancel
25 031 19 00011001 EM &#025; 介質中斷 End of Medium
26 032 1A 00011010 SUB &#026; 替換 Substitute
27 033 1B 00011011 ESC &#027; 換碼符 Escape
28 034 1C 00011100 FS &#028; 文件分隔符 File Separator
29 035 1D 00011101 GS &#029; 組分隔符 Group Separator
30 036 1E 00011110 RS &#030; 記錄分離符 Record Separator
31 037 1F 00011111 US &#031; 單元分隔符 Unit Separator
ASCII 打印字符 (字符編碼: 32-127)

32~126(共95個)是字符:32是空格,其中48~57爲0到9十個阿拉伯數字,65~90爲26個大寫英文字母,97~122號爲26個小寫英文字母,其餘爲一些標點符號、運算符號等。第127個字符表示的是鍵盤上的刪除命令。

十進制 DEC 八進制 OCT 十六進制 HEX 二進制 BIN 符號 Symbol HTML實體編碼 中文解釋 Description 英文解釋 Description
32 040 20 00100000   &#032; 空格 Space
33 041 21 00100001 ! &#033; 感嘆號 Exclamation mark
34 042 22 00100010 " &#034; 雙引號 Double quotes (or speech marks)
35 043 23 00100011 # &#035; 井號 Number
36 044 24 00100100 $ &#036; 美元符 Dollar
37 045 25 00100101 % &#037; 百分號 Per cent sign
38 046 26 00100110 & &#038; Ampersand
39 047 27 00100111 ' &#039; 單引號 Single quote
40 050 28 00101000 ( &#040; 左括號 Open parenthesis (or open bracket)
41 051 29 00101001 ) &#041; 右括號 Close parenthesis (or close bracket)
42 052 2A 00101010 * &#042; 星號 Asterisk
43 053 2B 00101011 + &#043; 加號 Plus
44 054 2C 00101100 , &#044; 逗號 Comma
45 055 2D 00101101 - &#045; 連字號或減號 Hyphen
46 056 2E 00101110 . &#046; 句點或小數點 Period, dot or full stop
47 057 2F 00101111 / &#047; 斜槓 Slash or divide
48 060 30 00110000 0 &#048; 0 Zero
49 061 31 00110001 1 &#049; 1 One
50 062 32 00110010 2 &#050; 2 Two
51 063 33 00110011 3 &#051; 3 Three
52 064 34 00110100 4 &#052; 4 Four
53 065 35 00110101 5 &#053; 5 Five
54 066 36 00110110 6 &#054; 6 Six
55 067 37 00110111 7 &#055; 7 Seven
56 070 38 00111000 8 &#056; 8 Eight
57 071 39 00111001 9 &#057; 9 Nine
58 072 3A 00111010 : &#058; 冒號 Colon
59 073 3B 00111011 ; &#059; 分號 Semicolon
60 074 3C 00111100 < &#060; 小於 Less than (or open angled bracket)
61 075 3D 00111101 = &#061; 等號 Equals
62 076 3E 00111110 > &#062; 大於 Greater than (or close angled bracket)
63 077 3F 00111111 ? &#063; 問號 Question mark
64 100 40 01000000 @ &#064; 電子郵件符號 At symbol
65 101 41 01000001 A &#065; 大寫字母 A Uppercase A
66 102 42 01000010 B &#066; 大寫字母 B Uppercase B
67 103 43 01000011 C &#067; 大寫字母 C Uppercase C
68 104 44 01000100 D &#068; 大寫字母 D Uppercase D
69 105 45 01000101 E &#069; 大寫字母 E Uppercase E
70 106 46 01000110 F &#070; 大寫字母 F Uppercase F
71 107 47 01000111 G &#071; 大寫字母 G Uppercase G
72 110 48 01001000 H &#072; 大寫字母 H Uppercase H
73 111 49 01001001 I &#073; 大寫字母 I Uppercase I
74 112 4A 01001010 J &#074; 大寫字母 J Uppercase J
75 113 4B 01001011 K &#075; 大寫字母 K Uppercase K
76 114 4C 01001100 L &#076; 大寫字母 L Uppercase L
77 115 4D 01001101 M &#077; 大寫字母 M Uppercase M
78 116 4E 01001110 N &#078; 大寫字母 N Uppercase N
79 117 4F 01001111 O &#079; 大寫字母 O Uppercase O
80 120 50 01010000 P &#080; 大寫字母 P Uppercase P
81 121 51 01010001 Q &#081; 大寫字母 Q Uppercase Q
82 122 52 01010010 R &#082; 大寫字母 R Uppercase R
83 123 53 01010011 S &#083; 大寫字母 S Uppercase S
84 124 54 01010100 T &#084; 大寫字母 T Uppercase T
85 125 55 01010101 U &#085; 大寫字母 U Uppercase U
86 126 56 01010110 V &#086; 大寫字母 V Uppercase V
87 127 57 01010111 W &#087 大寫字母 W Uppercase W
88 130 58 01011000 X &#088; 大寫字母 X Uppercase X
89 131 59 01011001 Y &#089; 大寫字母 Y Uppercase Y
90 132 5A 01011010 Z &#090; 大寫字母 Z Uppercase Z
91 133 5B 01011011 [ &#091; 左中括號 Opening bracket
92 134 5C 01011100 &#092; 反斜槓 Backslash
93 135 5D 01011101 ] &#093; 右中括號 Closing bracket
94 136 5E 01011110 ^ &#094; 音調符號 Caret - circumflex
95 137 5F 01011111 _ &#095; 下劃線 Underscore
96 140 60 01100000 ` &#096; 重音符 Grave accent
97 141 61 01100001 a &#097; 小寫字母 a Lowercase a
98 142 62 01100010 b &#098; 小寫字母 b Lowercase b
99 143 63 01100011 c &#099; 小寫字母 c Lowercase c
100 144 64 01100100 d &#100; 小寫字母 d Lowercase d
101 145 65 01100101 e &#101; 小寫字母 e Lowercase e
102 146 66 01100110 f &#102; 小寫字母 f Lowercase f
103 147 67 01100111 g &#103; 小寫字母 g Lowercase g
104 150 68 01101000 h &#104; 小寫字母 h Lowercase h
105 151 69 01101001 i &#105; 小寫字母 i Lowercase i
106 152 6A 01101010 j &#106; 小寫字母 j Lowercase j
107 153 6B 01101011 k &#107; 小寫字母 k Lowercase k
108 154 6C 01101100 l &#108; 小寫字母 l Lowercase l
109 155 6D 01101101 m &#109; 小寫字母 m Lowercase m
110 156 6E 01101110 n &#110; 小寫字母 n Lowercase n
111 157 6F 01101111 o &#111; 小寫字母 o Lowercase o
112 160 70 01110000 p &#112; 小寫字母 p Lowercase p
113 161 71 01110001 q &#113; 小寫字母 q Lowercase q
114 162 72 01110010 r &#114; 小寫字母 r Lowercase r
115 163 73 01110011 s &#115; 小寫字母 s Lowercase s
116 164 74 01110100 t &#116; 小寫字母 t Lowercase t
117 165 75 01110101 u &#117; 小寫字母 u Lowercase u
118 166 76 01110110 v &#118; 小寫字母 v Lowercase v
119 167 77 01110111 w &#119; 小寫字母 w Lowercase w
120 170 78 01111000 x &#120; 小寫字母 x Lowercase x
121 171 79 01111001 y &#121; 小寫字母 y Lowercase y
122 172 7A 01111010 z &#122; 小寫字母 z Lowercase z
123 173 7B 01111011 { &#123; 左大括號 Opening brace
124 174 7C 01111100 &#124; 垂直線
125 175 7D 01111101 } &#125; 右大括號 Closing brace
126 176 7E 01111110 ~ &#126; 波浪號 Equivalency sign - tilde
127 177 7F 01111111 &#127; 刪除 Delete
ASCII擴展碼 (字符編碼: 128-255)

128個稱爲擴展ASCII碼。許多基於x86的系統都支持使用擴展(或“高”)ASCII。擴展ASCII碼允許將每個字符的第8 位用於確定附加的128 個特殊符號字符、外來語字母和圖形符號。

十進制 DEC 八進制 OCT 十六進制 HEX 二進制 BIN 符號 Symbol HTML實體編碼 中文解釋 Description 英文解釋 Description
128 200 80 10000000 &#128; 歐盟符號 Euro sign
129 201 81 10000001      
130 202 82 10000010 &#130; 單低 9 引號 Single low-9 quotation mark
131 203 83 10000011 ƒ &#131; 帶鉤的拉丁小寫字母f Latin small letter f with hook
132 204 84 10000100 &#132; 雙低 9 引號 Double low-9 quotation mark
133 205 85 10000101 &#133; 水平省略號 Horizontal ellipsis
134 206 86 10000110 &#134; 劍號 Dagger
135 207 87 10000111 &#135; 雙劍號 Double dagger
136 210 88 10001000 ˆ &#136; 修正字符抑揚音符號 Modifier letter circumflex accent
137 211 89 10001001 &#137; 千分號 Per mille sign
138 212 8A 10001010 Š &#138; 帶彎音號的拉丁大寫字母 S Latin capital letter S with caron
139 213 8B 10001011 &#139; 左單書名號 Single left-pointing angle quotation
140 214 8C 10001100 Œ &#140; 拉丁大寫組合 OE Latin capital ligature OE
141 215 8D 10001101      
142 216 8E 10001110 Ž &#142; 帶彎音號的拉丁大寫字母 z Latin capital letter Z with caron
143 217 8F 10001111      
144 220 90 10010000      
145 221 91 10010001 &#145; 左單引號 Left single quotation mark
146 222 92 10010010 &#146; 右單引號 Right single quotation mark
147 223 93 10010011 &#147; 左雙引號 Left double quotation mark
148 224 94 10010100 &#148; 右雙引號 Right double quotation mark
149 225 95 10010101 &#149;   Bullet
150 226 96 10010110 &#150; 半長破折號 En dash
151 227 97 10010111 &#151; 全長破折號 Em dash
152 230 98 10011000 ˜ &#152; 小波浪線 Small tilde
153 231 99 10011001 &#153;   Trade mark sign
154 232 9A 10011010 š &#154; 帶彎音號的拉丁小寫字母 s Latin small letter s with caron
155 233 9B 10011011 &#155; 右單書名號 Single right-pointing angle quotation mark
156 234 9C 10011100 œ &#156; 拉丁小寫組合 oe Latin small ligature oe
157 235 9D 10011101      
158 236 9E 10011110 ž &#158; 帶彎音號的拉丁小寫字母 z Latin small letter z with caron
159 237 9F 10011111 Ÿ &#159; 帶彎音號的拉丁大寫字母 Y Latin capital letter Y with diaeresis
160 240 A0 10100000   &#160;   Non-breaking space
161 241 A1 10100001 ¡ &#161; 反向感嘆號 Inverted exclamation mark
162 242 A2 10100010 ¢ &#162; 分幣符號 Cent sign
163 243 A3 10100011 £ &#163; 英磅符號 Pound sign
164 244 A4 10100100 ¤ &#164;   Currency sign
165 245 A5 10100101 ¥ &#165; 人民幣符號 Yen sign
166 246 A6 10100110 ¦ &#166;   Pipe, Broken vertical bar
167 247 A7 10100111 § &#167; 章節符號 Section sign
168 250 A8 10101000 ¨ &#168; 通用貨幣符號 Spacing diaeresis - umlaut
169 251 A9 10101001 © &#169; 版權符號 Copyright sign
170 252 AA 10101010 ª &#170; 陰性順序指示符號 Feminine ordinal indicator
171 253 AB 10101011 « &#171; 左角引號 Left double angle quotes
172 254 AC 10101100 ¬ &#172;   Not sign
173 255 AD 10101101 ­ &#173;   Soft hyphen
174 256 AE 10101110 ® &#174;   Registered trade mark sign
175 257 AF 10101111 ¯ &#175;   Spacing macron - overline
176 260 B0 10110000 ° &#176; 溫度符號 Degree sign
177 261 B1 10110001 ± &#177; 加/減號 Plus-or-minus sign
178 262 B2 10110010 ² &#178; 上標 2 Superscript two - squared
179 263 B3 10110011 ³ &#179; 上標 3 Superscript three - cubed
180 264 B4 10110100 ´ &#180;   Acute accent - spacing acute
181 265 B5 10110101 µ &#181; 微符號 Micro sign
182 266 B6 10110110 &#182; 段落符號,pilcrow Pilcrow sign - paragraph sign
183 267 B7 10110111 · &#183; 中點 Middle dot - Georgian comma
184 270 B8 10111000 ¸ &#184;   Spacing cedilla
185 271 B9 10111001 ¹ &#185; 上標 1 Superscript one
186 272 BA 10111010 º &#186; 陽性順序指示符 Masculine ordinal indicator
187 273 BB 10111011 » &#187; 右角引號 Right double angle quotes
188 274 BC 10111100 ¼ &#188; 分數四分之一 Fraction one quarter
189 275 BD 10111101 ½ &#189; 分數二分之一 Fraction one half
190 276 BE 10111110 ¾ &#190;   Fraction three quarters
191 277 BF 10111111 ¿ &#191; 反向問號 Inverted question mark
192 300 C0 11000000 À &#192; 帶重音符的大寫字母 A Latin capital letter A with grave
193 301 C1 11000001 Á &#193; 帶尖銳重音的大寫字母 A Latin capital letter A with acute
194 302 C2 11000010 Â &#194; 帶音調符號的大寫字母 A Latin capital letter A with circumflex
195 303 C3 11000011 Ã &#195; 帶代字號的大寫字母 A Latin capital letter A with tilde
196 304 C4 11000100 Ä &#196; 帶元音變音 (分音符號) 的大寫字母 A Latin capital letter A with diaeresis
197 305 C5 11000101 Å &#197; 帶鈴聲的大寫字母 A Latin capital letter A with ring above
198 306 C6 11000110 Æ &#198; 大寫字母 AE 雙重元音 Latin capital letter AE
199 307 C7 11000111 Ç &#199; 帶變音符號的大寫字母 C Latin capital letter C with cedilla
200 310 C8 11001000 È &#200; 帶重音符的大寫字母 E Latin capital letter E with grave
201 311 C9 11001001 É &#201; 帶尖銳重音的大寫字母 E Latin capital letter E with acute
202 312 CA 11001010 Ê &#202; 帶音調符號的大寫字母 E Latin capital letter E with circumflex
203 313 CB 11001011 Ë &#203; 帶元音變音 (分音符號) 的大寫字母 E Latin capital letter E with diaeresis
204 314 CC 11001100 Ì &#204; 帶重音符的大寫字母 I Latin capital letter I with grave
205 315 CD 11001101 Í &#205; 帶尖銳重音的大寫字母 I Latin capital letter I with acute
206 316 CE 11001110 Î &#206; 帶音調符號的大寫字母 I Latin capital letter I with circumflex
207 317 CF 11001111 Ï &#207; 帶元音變音 (分音符號) 的大寫字母 I Latin capital letter I with diaeresis
208 320 D0 11010000 Ð &#208;   Latin capital letter ETH
209 321 D1 11010001 Ñ &#209; 帶代字號的大寫字母 N Latin capital letter N with tilde
210 322 D2 11010010 Ò &#210; 帶重音符的大寫字母 O Latin capital letter O with grave
211 323 D3 11010011 Ó &#211; 帶尖銳重音的大寫字母 O Latin capital letter O with acute
212 324 D4 11010100 Ô &#212; 帶音調符號的大寫字母 O Latin capital letter O with circumflex
213 325 D5 11010101 Õ &#213; 帶代字號的大寫字母 O Latin capital letter O with tilde
214 326 D6 11010110 Ö &#214; 帶元音變音 (分音符號) 的大寫字母 O Latin capital letter O with diaeresis
215 327 D7 11010111 × &#215; 大寫字母 OE 連字 Multiplication sign
216 330 D8 11011000 Ø &#216; 帶斜槓的大寫字母 O Latin capital letter O with slash
217 331 D9 11011001 Ù &#217; 帶重音符的大寫字母 U Latin capital letter U with grave
218 332 DA 11011010 Ú &#218; 帶尖銳重音的大寫字母 U Latin capital letter U with acute
219 333 DB 11011011 Û &#219; 帶音調符號的大寫字母 U Latin capital letter U with circumflex
220 334 DC 11011100 Ü &#220; 帶元音變音 (分音符號) 的大寫字母 U Latin capital letter U with diaeresis
221 335 DD 11011101 Ý &#221; 帶元音變音 (分音符號) 的大寫字母 Y Latin capital letter Y with acute
222 336 DE 11011110 Þ &#222;   Latin capital letter THORN
223 337 DF 11011111 ß &#223; 德語高調小寫字母 s Latin small letter sharp s - ess-zed
224 340 E0 11100000 à &#224; 帶重音符的小寫字母 a Latin small letter a with grave
225 341 E1 11100001 á &#225; 帶尖銳重音的小寫字母 a Latin small letter a with acute
226 342 E2 11100010 â &#226; 帶音調符號的小寫字母 a Latin small letter a with circumflex
227 343 E3 11100011 ã &#227; 帶代字號的小寫字母 a Latin small letter a with tilde
228 344 E4 11100100 ä &#228; 帶元音變音 (分音符號) 的小寫字母 a Latin small letter a with diaeresis
229 345 E5 11100101 å &#229; 帶鈴聲的小寫字母 a Latin small letter a with ring above
230 346 E6 11100110 æ &#230; 小寫字母 ae 雙重元音 Latin small letter ae
231 347 E7 11100111 ç &#231; 帶變音符號的小寫字母 c Latin small letter c with cedilla
232 350 E8 11101000 è &#232; 帶重音符的小寫字母 e Latin small letter e with grave
233 351 E9 11101001 é &#233; 帶尖銳重音的小寫字母 e Latin small letter e with acute
234 352 EA 11101010 ê &#234; 帶音調符號的小寫字母 e Latin small letter e with circumflex
235 353 EB 11101011 ë &#235; 帶元音變音 (分音符號) 的小寫字母 e Latin small letter e with diaeresis
236 354 EC 11101100 ì &#236; 帶重音符的小寫字母 i Latin small letter i with grave
237 355 ED 11101101 í &#237; 帶尖銳重音的小寫字母 i Latin small letter i with acute
238 356 EE 11101110 î &#238; 帶音調符號的小寫字母 i Latin small letter i with circumflex
239 357 EF 11101111 ï &#239; 帶元音變音 (分音符號) 的小寫字母 i Latin small letter i with diaeresis
240 360 F0 11110000 ð &#240;   Latin small letter eth
241 361 F1 11110001 ñ &#241; 帶代字號的小寫字母 n Latin small letter n with tilde
242 362 F2 11110010 ò &#242; 帶重音符的小寫字母 o Latin small letter o with grave
243 363 F3 11110011 ó &#243; 帶尖銳重音的小寫字母 o Latin small letter o with acute
244 364 F4 11110100 ô &#244; 帶音調符號的小寫字母 o Latin small letter o with circumflex
245 365 F5 11110101 õ &#245; 帶代字號的小寫字母 o Latin small letter o with tilde
246 366 F6 11110110 ö &#246; 帶元音變音 (分音符號) 的小寫字母 o Latin small letter o with diaeresis
247 367 F7 11110111 ÷ &#247; 小寫字母 oe 連字 Division sign
248 370 F8 11111000 ø &#248; 帶斜槓的小寫字母 o Latin small letter o with slash
249 371 F9 11111001 ù &#249; 帶重音符的小寫字母 u Latin small letter u with grave
250 372 FA 11111010 ú &#250; 帶尖銳重音的小寫字母 u Latin small letter u with acute
251 373 FB 11111011 û &#251; 帶音調符號的小寫字母 u Latin small letter u with circumflex
252 374 FC 11111100 ü &#252; 帶元音變音 (分音符號) 的小寫字母 u Latin small letter u with diaeresis
253 375 FD 11111101 ý &#253; 帶元音變音 (分音符號) 的小寫字母 y2 Latin small letter y with acute
254 376 FE 11111110 þ &#254;   Latin small letter thorn
255 377 FF 11111111 ÿ &#255;   Latin small letter y with diaeresis

參考引用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章