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. 正则表达式中的特殊字符
在表达式中有特殊意义,需要在它前面添加 "\" 才能当作普通文本字符来使用。
使用正则表达式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 示例
1 /** 2 * @title 密码验证,规则:长度8~30,不能含有#和空格,至少含有数字、大写、小写、特殊字符中的3种 3 * @param password 4 * @return boolean 5 */ 6 private static boolean validatePassword(String password) { 7 if (StringUtils.isBlank(password)) { 8 return false; 9 } 10 // 长度8~30 11 if (password.length() < 8 || password.length() > 30) { 12 return false; 13 } 14 // 不能含有#和空格 15 if (password.contains("#") || password.contains(" ")) { 16 return false; 17 } 18 int typecount = 0; 19 // 如果含有数字 20 if (Pattern.matches(".*[0-9]+.*", password)) { 21 typecount++; 22 } 23 // 如果含有大写字母 24 if (Pattern.matches(".*[A-Z]+.*", password)) { 25 typecount++; 26 } 27 // 如果含有小写字母 28 if (Pattern.matches(".*[a-z]+.*", password)) { 29 typecount++; 30 } 31 // 如果含有特殊字符 32 if (Pattern.matches(".*[^A-Za-z0-9]+.*", password)) { 33 typecount++; 34 } 35 // 至少含有数字、大写、小写、特殊字符中的3种 36 if (typecount < 3) { 37 return false; 38 } 39 return true; 40 }
来源:https://www.cnblogs.com/zengzhihua/p/9037856.html