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 }
