這篇文章主要介紹“JS的構(gòu)造正則表達(dá)式怎么使用”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“JS的構(gòu)造正則表達(dá)式怎么使用”文章能幫助大家解決問題。
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計、寶安網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
使用RegExp構(gòu)造函數(shù)可以定義正則表達(dá)式對象,具體語句格式如下:
new RegExp(pattern, attributes);
參數(shù)pattern是一個字符串,指定匹配模式或者正則表達(dá)式對象。參數(shù)attributes是一個可選的修飾性標(biāo)志,包含"g""i"和"m"三個選項,分別設(shè)置全局匹配、區(qū)分大小寫的匹配和多行匹配;如果參數(shù)pattern是正則表達(dá)式對象,則必須省略該參數(shù)。
該函數(shù)返回一個新的RegExp對象,該對象包含指定的匹配模式和匹配標(biāo)志。
下面示例使用RegExp構(gòu)造函數(shù)定義了一個簡單的正則表達(dá)式,匹配模式為字符“a”,沒有設(shè)置第二個參數(shù),所以這個正則表達(dá)式只能匹配字符串中第一個小寫字母“a”,后面的字母“a”將無法被匹配到。
var r = new RegExp("a"); //構(gòu)造最簡單的正則表達(dá)式var s = "JavaScript != JAVA"; //定義字符串直接量var a = s.match(r); //調(diào)用正則表達(dá)式執(zhí)行匹配操作,返回匹配的數(shù)組console.log(a); //返回數(shù)組["a"]console.log(a.index); //返回值為1,匹配的下標(biāo)位置
如果希望匹配字符串中所有的字母a,且不區(qū)分大小寫,則可以在第2個參數(shù)中設(shè)置g和i修飾詞。
var r = new RegExp("a", "gi"); //設(shè)置匹配模式為全局匹配,且不區(qū)分大小寫var s = "JavaScript != JAVA"; //字符串直接量var a = s.match(r); //匹配查找console.log(a); //返回數(shù)組["a", "a", "A", "A"]
在正則表達(dá)式中可以使用特殊字符。下面示例的正則表達(dá)式將匹配字符串“JavaScript JAVA”中每個單詞的首字母。
var r = new RegExp("\\b\\w", "gi"); //構(gòu)造正則表達(dá)式對象var s = "JavaScript JAVA"; //字符串直接量var a = s.match(r); //匹配查找console.log(A); //返回數(shù)組["j", "J"]
在上面示例中,字符串"\b\w"表示一個匹配模式,其中“b"表示單詞的邊界,"w"表示任意ASCII字符,反斜杠表示轉(zhuǎn)義序列。為了避免Regular()構(gòu)造函數(shù)的誤解,必須使用“\”替換所有“”字符,使用雙反斜杠表示斜杠本身的意思。
在腳本中動態(tài)創(chuàng)建正則表達(dá)式時,使用構(gòu)造函數(shù)RegExp()會更方便。例如,如果檢索的字符串是由用戶輸入的,那么就必須在運行時使用RegExp()構(gòu)造函數(shù)來創(chuàng)建正則表達(dá)式,而不能使用其他方法。
如果RegExp()構(gòu)造函數(shù)的第1個參數(shù)是一個正則表達(dá)式,則第2個參數(shù)可以省略。這時RegExp()構(gòu)造函數(shù)將創(chuàng)建一個參數(shù)相同的正則表達(dá)式對象。
var r = new RegExp("\\b\\w", "gi"); //構(gòu)造正則表達(dá)式var r1 = new RegExp(r); //把正則表達(dá)式傳遞給RegExp()構(gòu)造函數(shù)var s = "JavaScript JAVA"; //字符串直接量var a = s.match(r); //匹配查找console.log(a); //返回數(shù)組["j", "J"]
把正則表達(dá)式直接量傳遞給RegExp()構(gòu)造函數(shù),可以進(jìn)行類型封裝。
RegExp()也可以作為普通函數(shù)使用,這時與使用new運算符調(diào)用構(gòu)造函數(shù)功能相同。不過如果函數(shù)的參數(shù)是正則表達(dá)式,那么它僅返回正則表達(dá)式,而不再創(chuàng)建一個新的RegExp()對象。
var a = new RegExp("\\b\\w", "gi"); //構(gòu)造正則表達(dá)式對象var b = new RegExp(a); //對正則表達(dá)式對象進(jìn)行再封裝var c = RegExp(a); //返回正則表達(dá)式直接量console.log(a.constructor == RegExp); //返回trueconsole.log(b.constructor == RegExp); //返回trueconsole.log(c.constructor == RegExp); //返回true
關(guān)于“JS的構(gòu)造正則表達(dá)式怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。