1. 程式人生 > >Javascript正則筆記

Javascript正則筆記

執行方法 分割 script 同時 pil 使用 last put 支持

1. 生成正則表達式對象的方法
1. var rx = new RegExp(pattern, attributes)
參數pattern是正則表達式字符串
參數attributes是一個字符串,可以是i(表示忽略參數) m(表示多行匹配) g(表示全局匹配) ,也可以是它們的組合
2. var rx = /pattern/attributes
2. 正則表達式對象的屬性
1. lastIndex
是一個整數,標示下一次開始匹配的字符位置,在執行exec方法時會自動修改這個位置。如果匹配完一個字符串後,再重新匹配另外一個字符串,應手動修改為0,表示從頭開始匹配
2. .source 生成正則表達式對象的字符串,相當於Python中正則表達式對象的pattern屬性
3. .global
是否有/g屬性
4. .ignoreCase
是否有/i屬性
5. .multiline
是否有/m屬性
3. 正則表達式對象的常見方法
1. rx.test(string)
字符串是否匹配正則表達式
返回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)
動態改變正則表達式對象,一般不用。
4. 支持正則表達式的String對象的方法
1. <string>.search(rx)
返回與rx匹配的子串的起始位置,沒有匹配到返回-1
會忽略rx的lastIndex和/g,從頭開始匹配只匹配一次。
2. <string>.replace(參數1,參數2)
參數1可以是被替換的字符串或者正則表達式
參數2可以是替換字符串或者生成替換字符串的函數
替換字符串可以有如下特殊格式:
$i 與正則表達式中第i個捕獲分組匹配的文本
$& 與整個正則表達式匹配的文本
$` 正則表達式匹配到的字符串的左側的文本
$‘ 正則表達式匹配到的字符串的右側的文本
$$ $的字面值
Python中通過/i或者/g<id>來引用
生成替換字符串的函數
函數可以有如下參數
1. 匹配到的子串
2. 0個或者多個與子表達式匹配的文本
3. 匹配到的字符串在原字符串中的索引位置
4. 原字符串
以上參數倘若聲明,在執行方法時系統會自動傳入
3. <string>.split(seperator, howmany)
seperator:分隔符,可以是字符串或者rx
howmany: 可選,返回數組的最大長度,如果執行,則返回的數組不會超過指定的值,其他的被扔掉
功能:與<array>.join()執行相反的操作
如果rx中有分組,則會按照整個正則表達式匹配的內容來分割,同時把分組匹配到的內容也添加到生成的數組中,這一點與Python中一樣

4. string.match(rx)
參數是正則表達式對象,如果是字符串,則轉換為正則表達式
如果rx有/g,則把所有與正則表達式匹配的內容放到一個數組中,但是不會保留子表達式(分組)匹配到的內容
如果rx沒有/g,則只匹配一次,返回一個類似數組的對象
該對象第一個元素是與正則表達式匹配的文本
其他的元素則是與正則表達式子表達式(分組)匹配的文本
該對象具有兩個屬性index和input
index 表示匹配到的子串在原字符串中的位置
input 表示原字符串
註:
不推薦使用該方法,一般使用rx.exec(string)方法替代。

5. 總結
正則表達式一般具有匹配,搜索,替換,分割四大功能
分別對應rx.test(),rx.exec(),<string>.replace(),<string>.split()四個方法,其他的方法不是很常用。

Javascript正則筆記