JavaScript學習筆記-正則表達式(RegExp對象)

正則表達式(RegExp對象)
 
1.正則表達式字面量,在腳本加載後編譯。若你的正則表達式是常量,使用這種方式能夠得到更好的性能,重複使用時不會從新編譯;
2.使用構造函數建立的RegExp,提供了對正則表達式運行時的編譯。主要用於當你知道正則表達式的模式會發生改變時,或者你事先並不瞭解它的模式或者是從其餘地方(好比用戶的輸入),每次使用都會從新編譯;
        var myRe = /d(b+)d/g;
        var myArray = myRe.exec("cdbbdbsbz");
若是你不須要訪問正則表達式的屬性,這個腳本經過另外一個方法來建立myArray:
        var myArray = /d(b+)d/g.exec("cdbbdbsbz");
若是你想經過一個字符串構建正則表達式,那麼這個腳本還有另外一種方法:
        var myRe = new RegExp('d(b+)d', 'g');  //字符串內特殊字符需轉義
或:var myRe = new RegExp(/d(d+)d/,'g')
        var myArray = myRe.exec("cdbbdbsbz");
 
RegExp屬性:
RegExp.prototype.constructor 建立該正則對象的構造函數。
RegExp.prototype.global 是否開啓全局匹配,也就是匹配目標字符串中全部可能的匹配項,而不是隻進行第一次匹配。
RegExp.prototype.ignoreCase 在匹配字符串時是否要忽略字符的大小寫。
RegExp.prototype.lastIndex 下次匹配開始的字符串索引位置,這個屬性只有在使用g參數時可用
RegExp.prototype.multiline 是否開啓多行模式匹配(影響 ^ 和 $ 的行爲)。
RegExp.prototype.source 正則對象的源模式文本。在正則表達式建立時更新,不執行
RegExp.prototype.sticky (ES6)是否開啓粘滯匹配。
 
RegExp方法:每次執行 exec()、 test()方法後,就當即自動將lastIndex設置下次匹配開始位置,而String的方法則老是將lastIndex重置爲0
 
myRe .exec(str) 若是成功匹配,返回一個數組,而且更新正則表達式對象的屬性。返回的數組包括匹配的字符串做爲第一個元素,緊接着一個元素對應一個( )保存的子表達式匹配到的子串;若是匹配失敗,exec 方法將返回 null。
        返回的數組屬性:index指匹配到的字符位於原始字符串的基於0的索引值;input指原始字符串;
        更新後的正則表達式屬性: lastIndex 下一次匹配開始的位置; source 正則模式的字符串;
 
myRe. test(str);  測試一個字符串中是否匹配,它返回true或false
 
 
使用正則表達式的方法
方法             描述
exec         一個在字符串中執行查找匹配的RegExp方法,它返回一個數組(未匹配到則返回null)。
test          一個在字符串中測試是否匹配的RegExp方法,它返回true或false。
match       一個在字符串中執行查找匹配的String方法,它返回一個數組或者在未匹配到時返回null。
search      一個在字符串中測試匹配的String方法,它返回匹配到的位置索引,或者在失敗時返回-1。
replace     一個在字符串中執行查找匹配的String方法,而且使用替換字符串替換掉匹配到的子字符串。
split          一個使用正則表達式或者一個固定字符串分隔一個字符串,並將分隔後的子字符串存儲到數組中的String方法。
 
正則表達式標誌
標誌     描述
g         全局搜索。
i          不區分大小寫搜索。
m         多行搜索。'^','$'多行模式時匹配的開始或結束輸入字符串中的每一行,而不是整個字符串的開始或結束
y         執行「粘性」搜索,匹配從目標字符串的當前位置開始,能夠使用y標誌
u         Unicode。將模式視爲Unicode碼位(code points)序列
相關文章
相關標籤/搜索