Regex,正則
1.什麼是Regex
①檔案路徑萬用字元
"?"匹配單個字元,"*"匹配零個或多個字元。
②Regex
符合某種規則的運算式
③元字元與子匹配
元字元
子匹配
括弧所括起來的運算式部分為一個子匹配(子運算式)
2.RegExp對象
①建立
1)顯示構造器:var regExp = new RegExp("pattern"[,"flags"]);
2)隱式構造器:/pattern/[flags]
flags標誌字元:
g:用作全域標誌()
i:用作忽略大小寫
m:用作多行標誌
注意事項:
當使用顯示構造器的時候,應將原始的Regex模式中的每個"\"都使用"\\"來替換
var re = new RegExp("\\d{5}");
var re = /\d{5}/;
②RegExp對象的屬性:
1)靜態屬性:
index:匹配開始的位置,預設-1
input:返回當前所作用的字串
lastIndex:匹配字元的下一個位置,預設-1
lastMatch:最後一個匹配的字串
lastParen:子匹配的最後一個,匹配到的字串
leftContext:最後匹配的字串的左邊的內容
rightContext:最後匹配的字串的右邊的內容
$1...$9 子匹配匹配的內容
2)執行個體屬性:
global:全域標誌
ignoreCase:忽略大小寫
multiline:多行標誌,
source:返回模式文本
③方法
test(str):檢查一個字串是否滿足Regex,返回TRUE或false,並更新靜態屬性
exec(str):檢查一個字串是否滿足Regex,返回搜尋數組或null,並更新靜態屬性
返回數組還有三個屬性index,input,lastIndex
compile("pattern"[,"flags"]):更換RegExp對象執行個體所使用的Regex
說明:如果為Regex設定了全域標誌(g),可以多次調用exec和test方法在字串中執行連續搜尋,
每次都是從RegExp對象的lastIndex屬性指定的位置開始搜尋字串。如果沒有設定全域標誌(g),則exec和
test方法忽略RegExp對象的lastIndex屬性值,從字串的起始位置開始搜尋。
④String對象與Regex有關的方法
match(RegExp):與exec方法類似,返回一個包含搜尋結果的數組。
search(RegExp):返回第一個匹配的字串的位置
replace(RegExp,replaceText):替換滿足匹配的字串並返回替換後的字串
split([separator[,limit]]):返回拆分數組。
⑤Regex文法
元字元:
1).限定符:用於指定其前面的字元或組合項連續出現多少次
n+ 匹配任何包含至少一個 n 的字串。
n* 匹配任何包含零個或多個 n 的字串。
n? 匹配任何包含零個或一個 n 的字串。
n{X} 匹配包含 X 個 n 的序列的字串。
n{X,Y} 匹配包含 X 或 Y 個 n 的序列的字串。
n{X,} 匹配包含至少 X 個 n 的序列的字串。
n$ 匹配任何結尾為 n 的字串。
^n 匹配任何開頭為 n 的字串。
?=n 匹配任何其後緊接指定字串 n 的字串。
?!n 匹配任何其後沒有緊接指定字串 n 的字串。
2).選擇匹配符(|)
3).分組組合符:將Regex中的某一部分內容組合起來的符號。
4).反向引用符:用於匹配前面的分組組合所捕獲的內容的標識符號。
(pattern):子匹配,緩衝,用反向引用符調用
\num:num表示分組組合的序號
(?:pattern):子匹配,但是不會儲存在緩衝區中,不能用反向引用符調用
5).特殊字元
. 尋找單個字元,除了換行和行結束符。
\w 尋找單詞字元。
\W 尋找非單詞字元。
\d 尋找數字。
\D 尋找非數字字元。
\s 尋找空白字元。
\S 尋找非空白字元。
\b 尋找位於單詞的開頭或結尾的匹配。
\B 尋找不處在單詞的開頭或結尾的匹配。
\0 尋找 NUL 字元。
\n 尋找分行符號。
\f 尋找換頁符。
\r 尋找斷行符號符。
\t 尋找定位字元。
\v 尋找垂直定位字元。
\xxx 尋找以八位元 xxx 規定的字元。
\xdd 尋找以十六進位數 dd 規定的字元。
\uxxxx 尋找以十六進位數 xxxx 規定的 Unicode 字元。
6).字元匹配符
[abc] 尋找方括弧之間的任何字元。
[^abc] 尋找任何不在方括弧之間的字元。
[0-9] 尋找任何從 0 至 9 的數字。
[a-z] 尋找任何從小寫 a 到小寫 z 的字元。
[A-Z] 尋找任何從大寫 A 到大寫 Z 的字元。
[A-z] 尋找任何從大寫 A 到小寫 z 的字元。
[adgk] 尋找給定集合內的任何字元。
[^adgk] 尋找給定集合外的任何字元。
(red|blue|green) 尋找任何指定的選項。