所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
所有的转义字符和所对应的意义:
转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\?
代表一个问号
063
\0
空字符(NULL)
000
\ooo
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
所以在拼接特殊字符时可以使用\在特殊字符前面添加上 在实现字符的拼接
ASCII码表 0-127
Bin
Dec
Hex
缩写/字符
解释
00000000
0
00
NUL(null)
空字符
00000001
1
01
SOH(start of headling)
标题开始
00000010
2
02
STX (start of text)
正文开始
00000011
3
03
ETX (end of text)
正文结束
00000100
4
04
EOT (end of transmission)
传输结束
00000101
5
05
ENQ (enquiry)
请求
00000110
6
06
ACK (acknowledge)
收到通知
00000111
7
07
BEL (bell)
响铃
00001000
8
08
BS (backspace)
退格
00001001
9
09
HT (horizontal tab)
水平制表符
00001010
10
0A
LF (NL line feed, new line)
换行键
00001011
11
0B
VT (vertical tab)
垂直制表符
00001100
12
0C
FF (NP form feed, new page)
换页键
00001101
13
0D
CR (carriage return)
回车键
00001110
14
0E
SO (shift out)
不用切换
00001111
15
0F
SI (shift in)
启用切换
00010000
16
10
DLE (data link escape)
数据链路转义
00010001
17
11
DC1 (device control 1)
设备控制1
00010010
18
12
DC2 (device control 2)
设备控制2
00010011
19
13
DC3 (device control 3)
设备控制3
00010100
20
14
DC4 (device control 4)
设备控制4
00010101
21
15
NAK (negative acknowledge)
拒绝接收
00010110
22
16
SYN (synchronous idle)
同步空闲
00010111
23
17
ETB (end of trans. block)
传输块结束
00011000
24
18
CAN (cancel)
取消
00011001
25
19
EM (end of medium)
介质中断
00011010
26
1A
SUB (substitute)
替补
00011011
27
1B
ESC (escape)
溢出
00011100
28
1C
FS (file separator)
文件分割符
00011101
29
1D
GS (group separator)
分组符
00011110
30
1E
RS (record separator)
记录分离符
00011111
31
1F
US (unit separator)
单元分隔符
00100000
32
20
(space)
空格
00100001
33
21
!
00100010
34
22
"
00100011
35
23
00100100
36
24
$
00100101
37
25
%
00100110
38
26
&
00100111
39
27
'
00101000
40
28
(
00101001
41
29
)
00101010
42
2A
*
00101011
43
2B
00101100
44
2C
,
00101101
45
2D
-
00101110
46
2E
.
00101111
47
2F
/
00110000
48
30
0
00110001
49
31
1
00110010
50
32
2
00110011
51
33
3
00110100
52
34
4
00110101
53
35
5
00110110
54
36
6
00110111
55
37
7
00111000
56
38
8
00111001
57
39
9
00111010
58
3A
:
00111011
59
3B
;
00111100
60
3C
<
00111101
61
3D
=
00111110
62
3E
>
00111111
63
3F
?
01000000
64
40
@
01000001
65
41
A
01000010
66
42
B
01000011
67
43
C
01000100
68
44
D
01000101
69
45
E
01000110
70
46
F
01000111
71
47
G
01001000
72
48
H
01001001
73
49
I
01001010
74
4A
J
01001011
75
4B
K
01001100
76
4C
L
01001101
77
4D
M
01001110
78
4E
N
01001111
79
4F
O
01010000
80
50
P
01010001
81
51
Q
01010010
82
52
R
01010011
83
53
S
01010100
84
54
T
01010101
85
55
U
01010110
86
56
V
01010111
87
57
W
01011000
88
58
X
01011001
89
59
Y
01011010
90
5A
Z
01011011
91
5B
[
01011100
92
5C
\
01011101
93
5D
]
01011110
94
5E
^
01011111
95
5F
_
01100000
96
60
`
01100001
97
61
a
01100010
98
62
b
01100011
99
63
c
01100100
100
64
d
01100101
101
65
e
01100110
102
66
f
01100111
103
67
g
01101000
104
68
h
01101001
105
69
i
01101010
106
6A
j
01101011
107
6B
k
01101100
108
6C
l
01101101
109
6D
m
01101110
110
6E
n
01101111
111
6F
o
01110000
112
70
p
01110001
113
71
q
01110010
114
72
r
01110011
115
73
s
01110100
116
74
t
01110101
117
75
u
01110110
118
76
v
01110111
119
77
w
01111000
120
78
x
01111001
121
79
y
01111010
122
7A
z
01111011
123
7B
{
01111100
124
7C
|
01111101
125
7D
}
01111110
126
7E
~
01111111
127
7F
DEL (delete)
删除
1. 常见的转义字符
字母前面加上反斜线 "\" 来表示常见的那些不能显示的ASCII字符,称为转义字符。如 \0, \t, \n 等。
转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
*\\*
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
2. 正则表达式****中的特殊字符
在表达式中有特殊意义,需要在它前面添加 "\" 才能当作普通文本字符来使用。
/斜线与\反斜线
① / 斜线, slash或又称为forward slash (前斜线), 原本是标点符号。 起源于古罗马,中世纪时用作逗号(而当时的双斜线//是被当作连接号的,后来演化成等号=)。
a) 英语里的斜线, 最常用的即使替代字符“or”表选择, 比如: Yes/No; 还有就是避免名字的冲突,比如美国的人口普查表中有"Assyrian/Chaldean/Syriac", 就是为了避免因Syriac名字不同叫法而产生的冲突或歧义,其实也是or的含义;
b) 算术; 英文里面称over, 比如: 123/456,也即分数
c) 金钱表示。 $50/- 表示50美元上限, 后面没有了,防止有人添加修改。
d) 日期的表示
② \ backslash, 反斜线, 主要用于电脑中, 也正是对普通/斜线的借鉴。 操作系统(xNix), 电脑语言(C/C++, Perl),编码(部分Unicode)等都使用它。
使用正则表达式regex匹配特殊字符(2种方法记忆):
方法1:首先加"\"匹配该特殊字符本身,然后在转义字符(即"\")前加"\"
方法2:在特殊字符前加"\\"(或者使用[]),特别的"\"需要使用"\\\\"来匹配
字符
说明
input
regex1
regex2
^
匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"
"^"
\\^
[^]
$
匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"
"$"
\\$
[$]
.
匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."
"."
\\.
[.]
[ ]
用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" 和 "\]"
"["
\\[
[\\[]
*
修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"
"*"
\\*
[*]
\
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
"\\"
\\\\
?
修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?"
"?"
\\?
[?]
修饰匹配次数为至少 1****次。要匹配 "+" 字符本身,请使用 "\+"
"+"
\\+
[+]
{ }
修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"
"{"
\\{
[{]
|
左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"
"|"
\\|
[|]
( )
标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"
"("
\\(
[(]
3. java中使用正则表达式的情况
(1) String
public boolean matches(String regex)
public String replaceAll(String regex, String replacement)
public String replaceFirst(String regex, String replacement)
public String[] split(String regex)
(2) Pattern
public static Pattern compile(String regex)
public static boolean matches(String regex, CharSequence input)
典型的调用顺序是
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
在仅使用一次正则表达式时
boolean b = Pattern.matches("a*b", "aaaaab");
java 示例
/**
* @title 密码验证,规则:长度8~30,不能含有#和空格,至少含有数字、大写、小写、特殊字符中的3种
* @param password
* @return boolean
*/
private static boolean validatePassword(String password) {
if (StringUtils.isBlank(password)) {
return false;
}
// 长度8~30
if (password.length() < 8 || password.length() > 30) {
return false;
}
// 不能含有#和空格
if (password.contains("#") || password.contains(" ")) {
return false;
}
int typecount = 0;
// 如果含有数字
if (Pattern.matches(".*[0-9]+.*", password)) {
typecount++;
}
// 如果含有大写字母
if (Pattern.matches(".*[A-Z]+.*", password)) {
typecount++;
}
// 如果含有小写字母
if (Pattern.matches(".*[a-z]+.*", password)) {
typecount++;
}
// 如果含有特殊字符
if (Pattern.matches(".*[^A-Za-z0-9]+.*", password)) {
typecount++;
}
// 至少含有数字、大写、小写、特殊字符中的3种
if (typecount < 3) {
return false;
}
return true;
}
本文分享 CSDN - 东海陈光剑。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。