轉義字符,正則表達式,特殊字符,模式匹配


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)以外的任意一個字符。要匹配小數點本身,請使用 "\."

"."

\\.

[.]

[ ]

用來自定義能夠匹配 '多種字符' 的表達式。要匹配中括號,請使用 "\[" 和 "\]"

"["

\\[

[\\[]

*

修飾匹配次數為次或任意次。要匹配 "*" 字符本身,請使用 "\*"

"*"

\\*

[*]

\

將下一個字符標記為或特殊字符、或原義字符、或向后引用、或八進制轉義符。

"\\"

\\\\

 

?

修飾匹配次數為次或 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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM