正則表達式

正則表達式 2017-5-11web

語法:
+ 號 表明前面的字符串能夠至少出現一次 例如:kin+mos 能夠匹配出 kinkinkink+mos
* 號 表明前面的字符串能夠不出現或出現n次 例如:kin*mos 能夠匹配出 kinkinkinmos
? 號 表明前面的字符最多隻能出現一次 例如:kin?mos 能夠匹配出 kinmos

非打印字符
\cx 號 匹配由x指明的控制字符 例如 \cM 匹配一個Control-M 或回車符 x的值必須是 A-Z 或者 a-z 之一,不然將c視爲一個原義的c字符
\f 號 匹配一個換頁符 等價於 \x0c 和 \cL
\n 號 匹配一個換行符 等價於 \x0a 和 \cJ
\r 號 匹配一個回車符 等價於 \x0d 和 \xM
\s 號 匹配任何空白字符 包括空格 製表符 換頁符等 等價於 [ \f\n\r\t\v]
\S 號 匹配任何非空白字符 等價於 [^ \f\n\r\t\v]
\t 號 匹配一個製表符 等價於 \x09 和 \cl
\v 號 匹配一個垂直製表符 等價於 \x0b 和 \cK

特殊字符
特殊字符 好比 上面說的 + 號這種,若是須要找到 字符串中的 +號,須要 用\ 轉義 \+
$ 匹配輸入字符串的結尾位置
. 匹配除換行符\n 的全部字符
() 標記一個子表達式的開始和結束位置
[ 標記一箇中括號表達式的開始
\ 將下一個字符標記爲 或特殊字符 或原義字符 或向後引用 或八進制轉義符
^ 匹配輸入字符串的開始位置,除非在方括號表達式中使用,此時它表示不接受該字符集合
{ 標記限定符表達式的開始
| 指明兩項之間的一個選擇

限定符
限定符用來指定正則表達式的一個給定組件必需要出現多少次纔可以知足匹配
*
+
?
{n} n是一個非負整數 匹配肯定的 n次,例如:'o(2)' 不能匹配 bob中的 o 可是隻能能匹配boob中的兩個o
{n,} n是一個非負整數 至少匹配n次,例如 'o(2,)' 不能匹配 bob 可是能匹配 booob
(n,m) m,n 都是非負整數 其中 n<=m 最少匹配n次最多匹配 m 次

例子:
如要匹配一個字符串全是數字 / [1-9][0-9]*/ 意思是,第一位是1-9的數字,第二位及之後n位均是 0-9的數字

若是要匹配 <大家好> 標籤內的全部內容 /<.*>/

定位符
定位符可以將正則固定到行尾或行首
^ 匹配輸入字符串開始的位置
$ 匹配輸入字符串結尾的位置
\b 匹配一個字的邊界 即字與空格間的位置
\B 非字邊界匹配
例子:
例如須要匹配一個文章的章節 /^Chapter [1-9][0-9]*$] 表明從一行的開始到結尾只有這樣的字符 Chapter99999
/\bKin/ 匹配 Kinmos 這樣的字符 /mos\b/匹配 kinmos這樣的字符而並不能匹配 mosKin
/\Bmo/ 匹配 kinmos 卻不匹配moskin

反向引用
對一個正則表達式模式或部分模式兩邊添加圓括號將致使相關匹配存儲到一個臨時緩衝區,所捕獲的每一個子匹配都按照在正則表達式模式中從左到右出現的順序存儲,
緩衝區編號從1 開始 ,最多能夠存儲99個捕獲的子表達式,每一個緩衝區均可以使用 \n 訪問,其中 n 爲一個標識特定緩衝區 的一位或兩位十進制數

可使用非捕獲元字符 ?: ?= ?! 來重寫捕獲,忽略對相關匹配的保存
例子:
匹配重複的單詞
var str="It is itt is you like you";
var preg=/\b([a-z]+) \1\b/;
document.wrote(str.match(preg));
捕獲的表達式,正如[a-z]+ 指定的,包括一個或多個字母,正則表達式的第二部分是對之前捕獲的子匹配項的引用,即單詞的第二個匹配項正好由括號表達式匹配, \1 指定第一個子匹配項

分解url
var str="http://www.kinmos.cn:80/index";
var preg=/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
console.log(str.match(preg));

第一個括號子表達式捕獲web地址的協議部分,該子表達式匹配在冒號和兩個正斜槓前面的任何單詞
第二個括號子表達式捕獲地址的域地址部分,子表達式匹配 / 和 : 以外的一個或多個字符
第三個括號子表達式捕獲端口 該子表達式匹配冒號後面的零個或多個數字,只能重複一次該子表達式
第四個括號捕獲Web地址指定的路徑和頁信息,該子表達式能匹配不包括 # 或空格字符的任何字符序列

元字符
[xyz] 字符集合 匹配所保安的任意一個字符
[^xyz] 負值字符集合 匹配未包含的任意字符
[a-z] 字符範圍,匹配指定範圍內的任意字符
[^a-z] 負值字符範圍
\d 匹配一個數字字符 等價於 [0-9]
\D 匹配一個非數字字符
\f 匹配一個換頁符
\n 匹配一個換行符
\s 匹配任何空白字符
\w 匹配包括下劃線的任何單詞字符 等價於 [A-Za-z0-9_]
\W 匹配任何非單詞字符

運算符優先級
正則表達式從左到右進行計算,並遵循優先級順序,這與算術表達式類似



正則表達式

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息