先介紹參數為普通字符串的使用方式,此時match方法的返回值是存放首次匹配內容的數組。如果沒有找到匹配結果,返回null。語法結構:
1 str.match(searchvalue)
參數解析:
(1).searchvalue:必需,規定方法要檢索的字符串。
代碼實例:
let str="antzone";
console.log(str.match("n"));
代碼運行效果:
["n", index: 1, input: "antzone", groups: undefined]
對上述代碼運行結果分析如下:
(1).match方法在有匹配結果的時候返回值是一個數組。
(2).數組第一個元素是match方法首次匹配到的子字符串,"antzone"雖然有多個"n",但是返回的數組只存儲首次匹配到的"n",如果match方法的參數是全局匹配的正則,將會存儲所有的匹配到的子字符串。
(3).index屬性值返回首次匹配到子字符串的位置。
(4).input屬性值是原字符串"antzone"。
(5).groups屬性當前並不被支持,暫時不做介紹。
let str="antzone";
console.log(str.match("zon"));
代碼運行效果:
["zon", index: 3, input: "antzone", groups: undefined]
首次匹配到子字符的位置,以子字符串的首字符在原字符串位置為准。
字符串與數組類似,字符位置從0開始計算,也就是第一個字符的位置為0,第二個位置為1,以此類推。
let str="antzone";
console.log(str.match("螞蟻"));
代碼運行效果:
null
如果匹配不到任何內容,方法返回值為null。
正則表達式 match()
match方法可在字符串內查找一個或多個與指定正則表達式匹配的子字符串。
方法的返回值是存放着匹配結果的數組,但數組元素並不一定全都是匹配結果,后面會詳細介紹。
語法結構:
1 stringObject.match(reg)
參數解析:
(1).stringObject:從中查找子字符串的源字符串。
(2).reg:正則表達式對象或者正則表達式直接量。
瀏覽器支持:
(1).IE瀏覽器支持此方法。
(2).edge瀏覽器支持此方法。
(3).火狐瀏覽器支持此方法。
(4).谷歌瀏覽器支持此方法。
(5).opera瀏覽器支持此方法。
(6).safria瀏覽器支持此方法。
一.非全局匹配:
所謂非全局匹配,也就是使用g修飾符
此時,match方法最多只在字符串中成功匹配一次:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一個數組。
返回的數組解析如下:
首先說明一下,數組元素的索引是從0開始的。
(1).第0個元素是匹配結果。
(2).第1個元素是第一個引用型分組匹配的子字符串。
(3).第2個元素存放的是第二個引用型分組匹配的子字符串,依次類推。
返回的數組對象同時具有兩個屬性:
(1).index:返回匹配的子字符串起始字符在stringObject源字符串中的位置。
(2).input:返回stringObject源字符串。
二.全局匹配:
match方法執行全局匹配,獲取所有可以匹配的子字符串:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一個數組。
與非全局匹配的區別:
(1).不具有index和input屬性。
(2).不具有引用型分組匹配的子字符串,數組元素僅包含匹配的所有子字符串。
代碼實例如下:
var str="本站url地址是www.softwhy.com";
var reg=/why/;
console.log(str.match(reg));
上面代碼采用非全局模式,運行效果如下:
["why", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
當前JavaScript並不支持groups,先不用去管,分析如下:
(1).數組第0個元素是匹配的子字符串。
(2).index屬性值是"why"中"w"在源字符串中的位置。
(3).input屬性值是整個源字符串。
var str="本站url地址是www.softwhy.com";
var reg=/w(h)y/;
console.log(str.match(reg));
代碼運行效果如下:
"why", "h", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
分析如下:
(1).數組第0個元素是匹配的子字符串。
(2).數組第一個元素是正則表達式中引用分組所匹配的內容。
(3).index屬性值是"why"中"w"在源字符串中的位置。
(4).input屬性值是整個源字符串。
var str="本站url地址是www.softwhy.com";
var reg=/o/;
console.log(str.match(reg));
代碼運行效果如下:
["o", index: 13, input: "本站url地址是www.softwhy.com", groups: undefined]
盡管源字符串中,有多個"0",但是只能匹配第一個,因為執行的是非全局匹配。
var str="本站url地址是www.softwhy.com";
var reg=/o/g;
console.log(str.match(reg));
代碼運行效果如下:
["o", "o"]
匹配結果相對單純一些,數組中只存儲所匹配到的內容。
var str="antzoane";
var reg=/a(n)/g;
console.log(str.match(reg));
代碼運行效果如下:
["an", "an"]
盡管有子表達式,但是返回的數組並不包括子表達式匹配的內容,與非全局匹配不同。