JavaScript正則表達式函數總結


/* 測試環境:Chrome 63.0.3239.132 */

JS中正則對象修飾符可選值為:"i" "g" "m",即忽略大小寫 進行全局匹配 多行模式

JS中正則表達式支持的元字符:
1:枚舉方括號表達式,范圍方括號表達式,枚舉取反方括號表達式,范圍取反方括號表達式
2:. \w \W \d \D \s \S \b \B \n \r \f \v \888 \uffff \xff
3:n? n+ n* n{a} n{a,} n{a,b}及這些量詞的非貪心模式
4:^ $ (?!) (?=) (?:)
5: |

其他:
1:JS中引用分組請用\number,且不支持''和<>這樣的命名分組
2:不支持量詞的占有模式
3:不支持逆向環視
4:方括號表達式中復合表達式僅支持如下:
[abc0-9] [abc\d] [\d\w^&]等等類似的
5:支持修飾符組合,比如gim mig gi ig等等,無順序要求

JS正則對象屬性:
global:該對象是否開啟全局匹配,一個布爾值
ignoreCase:該對象是否開啟忽略大小寫,一個布爾值
multiline:該對象是否開啟多行模式,一個布爾值
lastIndex:該對象下一次開始匹配的位置,即上一次匹配結束的位置,一個正整數
source:正則表達式的源文本,即/regexp/flag的regexp,不包含修飾符,一個字符串

創建正則表達式:
1:myreg = new RegExp(patternString[,globalFlags]);
2:myreg = /yourRegexp/globalFlags;

JS中正則表達式常用方法:
在RegExp對象中:
1:test(yourString);
定義:檢測一個字符串是否匹配某個模式。
其他說明:該方法將忽略"g"標志,只要查找到符合模式的字符串即匹配成功。(如果正則對象含有"g"標志,那么每次使用test()將從lastIndex位置開始匹配,匹配成功會更新lastIndex屬性值;沒有"g"標志,test()將從字符串起點開始匹配,也不會對lastIndex做更新)

2:exec(yourString);
定義:檢索字符串中的正則表達式的匹配。
其他說明:若沒開啟"g"標志,從字符串起始位置開始並只查找一次,不修改正則對象的lastIndex屬性,返回一個對象,包含下標0、index、input,這時屬性和match等價;開啟"g",從lastIndex位置開始查找,如果存在匹配將修改正則對象的lastIndex屬性為這次找到的子字符串的末尾位置,返回一個同樣的對象。(你可以自行修改正則對象的lastIndex屬性來規定exec開始查找的位置。)

小總結:不具有"g"標志的正則對象和String對象的正則操作不能訪問和修改lastIndex屬性。(如果在成功地匹配了某個字符串之后就開始檢索另一個新的字符串,需要手動地把這個屬性設置為0)

在String對象中:
1:search(yourRegexpOrString);
定義:檢索字符串中與指定的子字符串或正則表達式相匹配的子字符串。
其他說明:該方法將忽略"g"標志和正則對象的lastIndex屬性(即總是從開頭找起),返回找到的第一個字符的位置,如果未找到返回-1。

2:match(yourRegexpOrString);
定義:在字符串內查找一個或多個與正則表達式匹配的字符串,返回一個對象。(同樣忽略laseIndex屬性,下面兩個函數也同樣)
其他說明:若沒開啟"g"標志,將只查找第一個匹配的字符串,返回一個對象,包含下標0、index、input,其中下標0等價於index,input是String的引用;開啟"g",返回一個數組,數組的length是匹配的字符串個數,每個元素是每個匹配的起始字符位置。

3:replace(yourRegexpOrString,placementString);
定義:用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
其他說明:如果沒有"g"標志只會替換一次,並且如果參數是字符串而不是正則對象始終替換一次。返回一個字符串,為用placementString替換yourRegexpOrString后的結果。placementString中$有特殊用途,見下表:

$1、$2、...、$99 regexp中捕獲的引用分組。
$& 本次匹配的文本。
$` 本次匹配到的子串左側的文本。
$' 本次匹配到的子串右側的文本。
$$ $本身。



該方法的第二個參數可以為一個函數,每次匹配都會調用該函數,以函數返回值作為placement,一共傳入4個參數,第一個參數為本次匹配的子文本($&);中間參數為子表達式匹配字符串,個數不限($i);倒數第二個參數為本次匹配到的子文本下標位置;最后一個參數表示執行replace方法的字符串本身。(注意的是,如果函數返回值中含有$,則它不具有上述表格中的特殊意義。)

4:split(yourRegexpOrString[,howMany]);
定義:把一個字符串分割成字符串值的數組。
其他說明:是arr.join(separatorString)反操作,如果傳入"",則每個字符都將會被分隔到數組。howMany指定返回數組的個數。


免責聲明!

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



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