標籤:
在JavaScript中的Regex介紹了JavaScript中Regex的文法,本文同樣是JavaScript權威指南的筆記,介紹JavaScript中Regex的一些方法。
- 用於模式比對的String方法
search()方法
參數是一個Regex,返回第一個與之匹配的字串的起始位置,如果找不到匹配的字串,它將返回-1。比如:‘JavaScript‘.search(/script/i) 返回4。
同時,search方法不支援全域搜尋,因為它會忽略Regex中的修飾符g。
replace()方法
執行檢索和替換的功能。第一個參數是Regex,第二個參數是要進行替換的字串。
如果指定了修飾符g,則會替換所有的匹配項,否則只替換第一個。
另外,上一篇文章中提到,Regex使用圓括弧進行分組,同時這些括起來的內容從左至右是有索引編號的。如果在替換字串中出現了$加數字,那麼replace()將用與指定的字運算式相匹配的文本來替換這兩個字元。比如:
var quote = /"([^"]*)"/g;‘abc"xxx"def‘.replace(quote, ‘“$1”‘);//abc“xxx”def
此外,replace第二個參數還可以是函數。例如:
text.replace(/\b\w+\b/g, function(word) {
return word.substring(0,1).toUpperCase + word.substring(1);
})
match()方法
唯一參數就是Regex,返回一個由匹配項組成的數組。若設定了g則返回所有匹配項組成的數組。
另外,如果沒有修飾符g,返回的數組中第一項是匹配的字串,後面的項是Regex中圓括弧括起來的項。
比如:
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;var text = ‘Visit my blog http://www.example.com/~david‘;//[‘http://www.example.com/~david‘, ‘http‘, ‘www.example.com‘, ‘~david‘]
split()方法
split的參數也支援Regex。
RegExp對象
RegExp的五個屬性
source:Regex的文本
global:是否有修飾符g
ignoreCase:是否有修飾符i
multiline:是否有修飾符multiline
lastIndex:如果有修飾符g,這個屬性儲存區下一次開始檢索的位置。
兩個方法
exec()方法,與match類似,但總是返回一個結果,並返回lastIndex屬性的資訊。從而可以反覆調用exec方法獲得所有匹配。
test()方法,比exec更簡單一些,如果包含匹配結果則返回true。
JavaScript中的Regex(下)