淺析正規表示式模式匹配的 String 方法

LINJIAJUN發表於2016-03-24

在JavaScript程式碼中使用正規表示式進行模式匹配經常會用到String物件和RegExp物件的一些方法,例如replace、match、search等方法,以下是對一些方法使用的總結。(出處:[http://www.cnblogs.com/bigboyLin/p/5297597.html](http://www.cnblogs.com/bigboyLin/p/5297597.html))

String物件中支援正規表示式有4種方法,分別是:search、replace、match、split

str.search(regexp)

定義:search()方法將在字串str中檢索與表示式regexp相匹配的字串,並且返回第一個匹配字串的第一個字元的位置。如果沒有找到任何匹配的字串,則返回-1。

例如:

但是,search()方法不支援全域性搜尋,因為會忽略正規表示式引數的標識g,並且也忽略了regexp的lastIndex屬性,總是從字串的開始位置進行檢索,所以它會總是返回str的第一個匹配的位置。
例如:

str.replace(regexp, replacement)

定義:replace()方法是執行查詢並替換的操作。它將正規表示式regexp匹配到的字串,然後用replacement的字串替換掉字串,如果有全域性標識g,則替換全部匹配的字串,否則只替換第一個匹配字串。

replace方法應該是比較常用的一個方法,在字串替換操作中非常有用的。例如:

1、簡單替換

2、全域性替換

3、使用replacement中的特殊字元替換,在replacement中$字元有特殊的意義,具體說明如下表格:

字元 替換文字
$1、$2、…、$99 與regexp中的第1個到99 個子表示式相匹配的文字
$& 與regexp相匹配的字串
$` 位於匹配子串左側的文字
$’ 位於匹配子串右側的文字
$$ 直接量符號

來看下例子:

4、使用replacement作為函式替換

replace的引數replacement可以是函式而不是字串,每個匹配都會呼叫該函式,它返回的字串將作為替換的文字使用。該函式的第一個引數是整個匹配模式的字串,接下來的引數是與模式中的子表示式匹配的字串,可以有0個或多個引數。接下來的引數是一個整數,宣告瞭匹配在str中出現的位置。最後的引數是str自身。
來看個例子:

str.match(regexp)

定義:match()方法是最常用的String正規表示式方法。它唯一的引數就是一個正規表示式或者通過RegExp()建構函式來建立正規表示式,返回值是包含了匹配結果的陣列。

match()方法中的regexp正規表示式一般又分為兩種情況:有設定全域性標誌g和沒有設定全域性標誌g

1、有設定全域性標誌

如果設定了全域性標誌g,則返回的陣列包含的就是出現在字串的所有匹配結果,例如:

2、沒有設定全域性標誌

如果沒有設定全域性標誌,則就不是全域性性的檢索,只是檢索第一個匹配。這種情況下,match()方法匹配的結果也是返回一個陣列,陣列的第一個元素就是匹配的字串,而餘下的元素則是正規表示式中用括號括起來的子表示式。來看個例子:

str.split(delimiter, limit)

定義:split()方法可以把呼叫它的字串分解為一個字串陣列,使用的分隔符是它的引數。
引數:
delimiter:字串或者正規表示式,從該引數指定的地方分割字串。
limit:指定返回陣列的最大長度,如果沒有設定該引數,則整個字串都會被分割。
例如:

以上。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

淺析正規表示式模式匹配的 String 方法 淺析正規表示式模式匹配的 String 方法

相關文章