標籤:替換字串 動態 分割 source 使用 replace 多次 split modifier
1. 產生Regex對象的方法
1. var rx = new RegExp(pattern, attributes)
參數pattern是Regex字串
參數attributes是一個字串,可以是i(表示忽略參數) m(表示多行匹配) g(表示全域匹配) ,也可以是它們的組合
2. var rx = /pattern/attributes
2. Regex對象的屬性
1. lastIndex
是一個整數,標示下一次開始匹配的字元位置,在執行exec方法時會自動修改這個位置。如果匹配完一個字串後,再重新匹配另外一個字串,應手動修改為0,表示從頭開始匹配
2. .source 產生Regex對象的字串,相當於Python中Regex對象的pattern屬性
3. .global
是否有/g屬性
4. .ignoreCase
是否有/i屬性
5. .multiline
是否有/m屬性
3. Regex對象的常見方法
1. rx.test(string)
字串是否匹配Regex
返回true或者false
2. rx.exec(string)
返回一個類數組對象,未匹配到返回null
該對象的第一個元素是匹配到的子符串,後面的元素是與分組子運算式匹配的字串
該對象具有index和input兩個屬性
1. .index 匹配到的子串的位置
2. .input用來匹配的字串,即exec方法的string參數
當rx是全域模式時,可以多次執行exec方法直到返回null,從而擷取所有的匹配
當rx對象執行exec方法匹配完一個字串要匹配另外一個字串的時候,應手動把rx.lastIndex設定為0
3. rx.compile(regex, modifier)
動態改變Regex對象,一般不用。
4. 支援Regex的String對象的方法
1. <string>.search(rx)
返回與rx匹配的子串的起始位置,沒有匹配到返回-1
會忽略rx的lastIndex和/g,從頭開始匹配只匹配一次。
2. <string>.replace(參數1,參數2)
參數1可以是被替換的字串或者Regex
參數2可以是替換字串或者產生替換字串的函數
替換字串可以有如下特殊格式:
$i 與Regex中第i個捕獲分組匹配的文本
$&與整個Regex匹配的文本
$`Regex匹配到的字串的左側的文本
$‘Regex匹配到的字串的右側的文本
$$$的字面值
Python中通過/i或者/g<id>來引用
產生替換字串的函數
函數可以有如下參數
1. 匹配到的子串
2. 0個或者多個與子運算式匹配的文本
3. 匹配到的字串在原字串中的索引位置
4. 原字串
以上參數倘若聲明,在執行方法時系統會自動傳入
3. <string>.split(seperator, howmany)
seperator:分隔字元,可以是字串或者rx
howmany:可選,返回數組的最大長度,如果執行,則返回的數組不會超過指定的值,其他的被扔掉
功能:與<array>.join()執行相反的操作
如果rx中有分組,則會按照整個Regex匹配的內容來分割,同時把分組匹配到的內容也添加到產生的數組中,這一點與Python中一樣
4. string.match(rx)
參數是Regex對象,如果是字串,則轉換為Regex
如果rx有/g,則把所有與Regex匹配的內容放到一個數組中,但是不會保留子運算式(分組)匹配到的內容
如果rx沒有/g,則只匹配一次,返回一個類似數組的對象
該對象第一個元素是與Regex匹配的文本
其他的元素則是與Regex子運算式(分組)匹配的文本
該對象具有兩個屬性index和input
index 表示匹配到的子串在原字串中的位置
input表示原字串
註:
不推薦使用該方法,一般使用rx.exec(string)方法替代。
5. 總結
Regex一般具有匹配,搜尋,替換,分割四大功能
分別對應rx.test(),rx.exec(),<string>.replace(),<string>.split()四個方法,其他的方法不是很常用。
Javascript正則筆記