RegExp 的 exec 方法

語法:
regexObj.exec(str)

做用是檢測 str 中是否有匹配 regexOjb 的部分,返回值是一個數組。簡單的例子:數組

var re = /\d/g
var str = 'a11a22a11a22'

re.exec(str) // 第1次執行

// Result:      ["1", index: 1, input: "a112211"]
// 索引0:       匹配的值
// 屬性'index': 這個值所在位置

re.exec(str) // 第2次執行 (注意:re 若是沒有加 g 標識的話,執行結果和第1次同樣,不會向後匹配)

// Result:      ["1", index: 2, input: "a112211"]

若是 re 中有分組,則會把分組放入執行結果的 [1]...[n]ui

改變一下上例中的 re :code

var re = /(a\d)(\d)/g // 兩個分組:(a\d)、(\d)
var str = 'a11a22a11a22'

re.exec(str) // 第1次執行

// Result:      ["a11", "a1", "1", index: 0, input: "a11a22a11a22"]
// 索引0:       匹配的值
// 索引1:       匹配第1個分組的值
// 索引2:       匹配第2個分組的值
// 屬性'index': 這個值所在位置

re.exec(str) // 第2次執行

// Result:      ["a22", "a2", "2", index: 3, input: "a11a22a11a22"]

利用exec() 會把匹配內容中分組的值分別獲得的特性,咱們能夠很方便得從一段字符串中取得目標信息。如:索引

var re2 = /(\d{1,4}) (.*?) (\w{2} \d{4,5}),?/gi
var [_ , nb, addr, zip] = re2.exec("123 Main Street St. Louisville OH 43071")

// nb:   123
// addr: Main Street St. Louisville
// zip:  OH 43071
相關文章
相關標籤/搜索