match的用法

match():可在字符串内检索指定的值,並且返回指定的第一個值,找不到時回傳 null, 此陣列還會有 index、input 兩個屬性。
index:符合的第一個字元位置
input:原始字串

match在匹配正則表達式根據全局(g)與非全局有不同的結果

非全局變量

match方法执行全局匹配,获取所有可以匹配的子字符串:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
(3) 只能匹配第一个,因为执行的是非全局匹配
数组元素的索引是从0开始的。

代碼:

var str="本站url地址是www.softwhy.com"; 
var reg=/why/;
console.log(str.match(reg));
//上面代码采用非全局模式,运行效果如下:

["why", index: 16, input: "本站url地址是www.softwhy.com", 
groups: undefined]
含有子表達式:括號()

match方法执行全局匹配並包含子表達式時
(1).如果不存在匹配的子字符串,返回null。
(2).第一個數組為:匹配的子字符串
第二個數組為:用小括號理的條件(h)再從已經匹配的字符串(‘why’)裡在匹配一次,因此返回 h

代碼:

 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]]

全局變量(g)

match方法执行全局匹配,获取所有可以匹配的子字符串:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
与非全局匹配的区别:
(1).不具有index和input属性。
(2).不具有引用型分组匹配的子字符串,数组元素仅包含匹配的所有子字符串。
(3)數組一樣從0開始並將所有能匹配的元素依序存到數組中…

代碼:

var str = "本站url地址是www.softowhy.com";
var reg = /o/g;
console.log(str.match(reg));
//代码运行效果如下:
["o", "o", "o"]              
含有子表達式

(1)尽管有子表达式,但是返回的数组并不包括子表达式匹配的内容,与非全局匹配不同。

var str="antzoane"; 
var reg=/a(n)/g;
console.log(str.match(reg));
//代码运行效果如下:
 ["an", "an"]

match的方法我在練習星星評分時在大神的代碼中學習到,當時目的是要擷取一串字符中的特定部分字符,只想要獲取特殊符號(|) 前的所有字符,利用了match非全局子表達式的特性,就是從已匹配中的文字用小括號裡的條件在匹配一次即可把特殊符號 (|)前的文字獲取過來!!!

代碼

    var aMsg = [
                 "很不满意|差得太离谱,与卖家描述的严重不符,非常不满",
                 "不满意|部分有破损,与卖家描述的不符,不满意",
                 "一般|质量一般,没有卖家描述的那么好",
                 "满意|质量不错,与卖家描述的基本一致,还是挺满意的",
                 "非常满意|质量非常好,与卖家描述的完全一致,非常满意"
                           ]
   console.log(aMsg[1].match(/(.+)\|/)[1])  

以上!!希望能持值已恆!!!

你可能感兴趣的:(js筆記)