您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
摘要:手撸基于ASCII码表的校验密码方法。
附赠正则表达式
密码规则:包含 数字,大小写,特殊字符^%&',;=?$',长度8~20位。
群聊
群友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
�
空字符
Null char
1
001
01
00000001
SOH

标题开始
Start of Heading
2
002
02
00000010
STX

正文开始
Start of Text
3
003
03
00000011
ETX

正文结束
End of Text
4
004
04
00000100
EOT

传输结束
End of Transmission
5
005
05
00000101
ENQ

询问
Enquiry
6
006
06
00000110
ACK

收到通知
Acknowledgment
7
007
07
00000111
BEL

铃
Bell
8
010
08
00001000
BS

退格
Back Space
9
011
09
00001001
HT
	
水平制表符
Horizontal Tab
10
012
0A
00001010
LF


换行键
Line Feed
11
013
0B
00001011
VT

垂直制表符
Vertical Tab
12
014
0C
00001100
FF

换页键
Form Feed
13
015
0D
00001101
CR

回车键
Carriage Return
14
016
0E
00001110
SO

移出
Shift Out / X-On
15
017
0F
00001111
SI

移入
Shift In / X-Off
16
020
10
00010000
DLE

数据链路转义
Data Line Escape
17
021
11
00010001
DC1

设备控制 1
Device Control 1 (oft. XON)
18
022
12
00010010
DC2

设备控制 2
Device Control 2
19
023
13
00010011
DC3

设备控制 3
Device Control 3 (oft. XOFF)
20
024
14
00010100
DC4

设备控制 4
Device Control 4
21
025
15
00010101
NAK

拒绝接收
Negative Acknowledgement
22
026
16
00010110
SYN

同步空闲
Synchronous Idle
23
027
17
00010111
ETB

传输块结束
End of Transmit Block
24
030
18
00011000
CAN

取消
Cancel
25
031
19
00011001
EM

介质中断
End of Medium
26
032
1A
00011010
SUB

替换
Substitute
27
033
1B
00011011
ESC

换码符
Escape
28
034
1C
00011100
FS

文件分隔符
File Separator
29
035
1D
00011101
GS

组分隔符
Group Separator
30
036
1E
00011110
RS

记录分离符
Record Separator
31
037
1F
00011111
US

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

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