正則表達式(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)序列