'北京空氣質(zhì)量'.match(/(.*?)空氣/)
返回 ['北京空氣']
大部分人應(yīng)該都知道牺弹,語(yǔ)句最后的下標(biāo) [1]
晶默,可能會(huì)讓不少人犯迷糊趴梢。
先來(lái)看看這條語(yǔ)句中涉及到的幾個(gè)關(guān)鍵詞:RegExp
彰阴、.
、*
妻味、?
拓劝、(exp)
栖博、match()
;
-
RegExp
:正則表達(dá)式丧叽,又稱規(guī)則表達(dá)式,常被用來(lái)檢索脱茉、替換那些符合某個(gè)模式(規(guī)則)的文本。 -
.
:匹配除換行符以外的任意字符。 -
*
:正則表達(dá)式中的限定符串慰,用于指定數(shù)量神汹。 -
?
:正則表達(dá)式中的限定符滔以,重復(fù)零次或一次桃漾。當(dāng)*
和?
一起使用即*?
,表示重復(fù)任意次,但盡可能少重復(fù)(懶惰模式)。 -
stringObject.match(regexp)
:match() 方法將檢索字符串 stringObject,以找到一個(gè)或多個(gè)與regexp
匹配的文本瞧柔。 -
(exp)
:匹配這個(gè)子表達(dá)式exp
的文本哥蔚,并捕獲文本到自動(dòng)命名的組里。返回存放匹配結(jié)果的數(shù)組。該數(shù)組的內(nèi)容依賴于regexp
是否具有全局標(biāo)志g
。- 如果
regexp
沒(méi)有標(biāo)志g
, 只在stringObject
中執(zhí)行一次匹配站辉。如果沒(méi)有找到匹配的文本將返回null
汰蓉。否則,返回一個(gè)數(shù)組。該數(shù)組的第0個(gè)元素存放匹配的文本,其余的元素存放與正則表達(dá)式的子表達(dá)式匹配的文本铃拇。該數(shù)組還有兩個(gè)對(duì)象屬性显晶。index
屬性聲明的是匹配文本的起始字符在stringObject
中的位置,input
屬性聲明的是對(duì)stringObjec
t 的引用。
- 如果
- 如果
regexp
具有標(biāo)志g
凡泣,則match()
方法將執(zhí)行全局檢索航闺,找到stringObject
中的所有匹配子字符串乖杠。若沒(méi)有找到任何匹配的子串,則返回 null。如果找到了一個(gè)或多個(gè)匹配子串辫塌,則返回一個(gè)數(shù)組感耙。不過(guò)全局匹配返回的數(shù)組的內(nèi)容與前者大不相同只酥,它的數(shù)組元素中存放的是stringObject
中所有的匹配子串,而且也沒(méi)有index
屬性或input
屬性。
正則表達(dá)式 /(.*?)空氣/
表示以任意個(gè)任意字符開(kāi)始以 空氣
結(jié)束的字符段砸捏。
根據(jù)上面的解釋轰驳,'北京空氣質(zhì)量'.match(/(.*?)空氣/)
中的 regexp
表達(dá)式?jīng)]有標(biāo)志 g
勤哗,如果找到匹配的文本將返回一個(gè)數(shù)組,該數(shù)組的非第0個(gè)元素存儲(chǔ)子表達(dá)式的文本映屋。正則表達(dá)式 /(.*?)空氣/
的子表達(dá)式是 (.*?)
它匹配的文本是 北京
將作為返回?cái)?shù)組的第1個(gè)元素,so桃序,'北京空氣質(zhì)量'.match(/(.*?)空氣/)[1]
葛账,等同于 ['北京空氣', '北京'][1]
付燥。