正則學習筆記

2022-02-12 12:37:26 字數 3091 閱讀 2457

文星家:  ? *  +  即 01次、0多次、1多次

^                  匹配起始端

$                  匹配結尾處

.                  匹配任意單個字元,但換行符除外

(x)              匹配x並記住x,前提是匹配

(?:x)          匹配x但不記住x

x(?=y)             匹配x,僅當後面緊跟著y時。如果符合匹配,則只有x會被記住,y不會被記住。

x(?!y)                匹配x,僅當後面不緊跟著y時。如果符合匹配,則只有x會被記住,y不會被記住。

x|y                匹配x或y。注意如果x和y都匹配上了,那麼只記住x。

匹配前乙個字元的n次出現

匹配前乙個字元的至少n次出現

匹配前乙個字元的至少n次最多m次的出現

[xyz]                xyz表示乙個字串,該模式表示匹配中的乙個字元,形式上[xyz]等同於[x-z]

[^xyz]                該模式表示匹配非中的乙個字元,形式上[^xyz]等同於[^x-z]

[\b]                匹配退格鍵

\b                匹配乙個詞的邊界符,例如空格和換行符等等,當然匹配換行符時,表示式應該附加引數m

var regx=/\bc./;

var rs=regx.exec(「beijing is a beautiful city」);

結果:匹配成功,rs的值為:,注意c前邊的空格不會匹配到結果中,即是不正確的。

\b                代表乙個非單詞邊界。

\cx                匹配乙個控制字元

\d                匹配乙個數字字元,等同於[0-9]

\d                匹配乙個非數字字元,等同於[^0-9]

\f                匹配乙個換頁符

\n                匹配乙個換行符。因為是換行符,所以在表示式中要加入m引數

\r                匹配乙個回車符

\s                匹配乙個空格符,等同於[ \f\n\r\t\v\u00a0\u2028\u2029]

\s                匹配乙個非空格符,等同於[ ^\f\n\r\t\v\u00a0\u2028\u2029]

\t                匹配乙個tab

\v                匹配乙個豎向的tab

\w                匹配乙個數字、_或字母表字元,即[a-za-z0-9_ ]

\w                匹配乙個非數字、_或字母表字元,即[^a-za-z0-9_ ]

\n                注意不是\n,這裡n是乙個正整數,表示匹配第n個()中的字元

\0                匹配乙個nul字元。

\xhh                匹配乙個由兩位16進製制數字所表達的字元。

\uhhhh                匹配乙個由四位16進製制數字所表達的字元。

g:代表可以進行全域性匹配。

i:代表不區分大小寫匹配。

m:代表可以進行多行匹配。

1>exec(str),返回str中與表示式相匹配的第乙個字串,而且以陣列的形式表現,當然如果表示式中含有捕捉用的小括號,則返回的陣列中也可能含有()中的匹配字串

2>test(str),判斷字串str是否匹配表示式,返回乙個布林值

1>match(expr),返回與expr相匹配的乙個字串陣列,如果沒有加引數g,則返回第乙個匹配,加入引數g則返回所有的匹配

2>search(expr),返回字串中與expr相匹配的第乙個匹配的index值

3>replace(expr,str),將字串中匹配expr的部分替換為str。另外在replace方法中,str中可以含有一種變數符號$,格式為$n,代表匹配中被記住的第n的匹配字串(注意小括號可以記憶匹配)。

對於replace(expr,str)方法還要特別注意一點,如果expr是乙個表示式物件則會進行全域性替換(此時表示式必須附加引數g,否則也只是替換第乙個匹配),如果expr是乙個字串物件,則只會替換第乙個匹配的部分

4>split(expr),將字串以匹配expr的部分做分割,返回乙個陣列,而且表示式是否附加引數g都沒有關係,結果是一樣的

1>lastindex,返回開始下乙個匹配的位置,注意必須是全域性匹配(表示式中帶有g引數)時,lastindex才會有不斷返回下乙個匹配值,否則該值為總是返回第乙個下乙個匹配位置

2>source,返回表示式字串自身

1>index,返回當前匹配的位置

var regx=/user\d/;

var rs=regx.exec(「sdsfuser1dfsfuser2」);

var index1=rs.index;

2>input,用於匹配的字串。例如:

var regx=/user\d/;

var rs=regx.exec(「sdsfuser1dfsfuser2」);

var input=rs.input;

input的值為sdsfuser1dfsfuser2。

3>[0],返回匹配結果中的第乙個匹配值,對於match而言可能返回乙個多值的數字,則除了[0]外,還可以取[1]、[2]等等。例如:

var regx=/user\d/;

var rs=regx.exec(「sdsfuser1dfsfuser2」);

var value1=rs[0];

rs=regx.exec(「sdsfuser1dfsfuser2」);

var value2=rs[0];

value1的值為user1,value2的值為user2

5,實際應用

1)實際應用一

描述:有一表單,其中有乙個「使用者名稱」input域

要求:漢字,而且不能少於2個漢字,不能多於4個漢字。

實現:2)實際應用二

描述:給定乙個含有html標記的字串,要求將其中的html標記去掉。

實現:

正則學習筆記

最近做東西頻繁的用到正則這一塊,所以自己又翻了翻以前的筆記和檢視了正則三十分鐘入門教程。重新整理了筆記,希望在以後的學習過程中便於查閱 注 以下例子非本人原創 什麼是正規表示式 在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。正規表示式就是用於描述這些規則的工具。換句話說,正...

正則學習筆記

字元匹配 區間範圍框 列舉值 a z0 9a z 分枝條件或 特殊轉義符 取消轉義 w a za z0 9 r n 換行符匹配 u4e00 u9fa5 漢字 s s 任意字元 懶惰匹配 若發現匹配立即返回,懶惰搜尋 例 a.b exec abcdedfb abcdedfb a.b exec abcd...

正則學習筆記2

問題 我原來寫的標籤中沒有加上,現在我想在寫好的頁面中用正規表示式對它們進行替換。舉例如下 其中的 為轉變標誌 1.2.test test 3.test test1 test2 test3 test4 test test1 test2 test3 test4 var str test test1 t...