摘要:修飾符修飾符表示模式的附加規(guī)則,放在正則模式的最尾部。全局匹配,正則對(duì)象將匹配全部符合條件的結(jié)果,主要用于搜索和替換忽略大小寫(xiě)和可以匹配行首和行尾了,即和會(huì)識(shí)別換行符正則模式不含修飾符,每次都是從字符串頭部開(kāi)始匹配。
匹配規(guī)則 字面量字符
大部分字符在正則表達(dá)式中,就是字面的含義。如果在正則表達(dá)式之中,某個(gè)字符只表示它字面的含義,那么它們就是“字面量字符”(literalcharacters)
/Wade/.test("Dwyane Wade") // true
上面代碼中正則表達(dá)式的Wade,就是字面量字符,所以 /Wade/ 匹配 Dwyane Wade.
元字符除了字面量字符以外,還有一部分字符有特殊含義,不代表字面的意思。它們叫做“元字符”(metacharacters)
點(diǎn)字符 (.)
匹配任意一個(gè)字符,除了換行和行結(jié)束符。
var regexp = /w.e/; regexp.test("wae") // true regexp.test("wade"); // false
位置字符
位置字符用來(lái)提示字符所處的位置,主要有兩個(gè)字符。
^ 表示字符串的開(kāi)始位置
$ 表示字符串的結(jié)束位置
// test必須出現(xiàn)在開(kāi)始位置 /^test/.test("test-wade"); // true // test必須出現(xiàn)在結(jié)束位置 /test$/.test("wade-test"); // true // 開(kāi)始位置到結(jié)束位置只有test /^test$/.test("test"); // true /^test$/.test("test test"); // false
選擇符 (|)
豎線(xiàn)符號(hào)(|)在正則表達(dá)式中表示“或關(guān)系”(OR)
// 匹配Test或Wade /Test|Wade/.test("DwyaneWade") // true
多個(gè)選擇符可以聯(lián)合使用
// 匹配Test、Dwyane、Wade之中的一個(gè) /Test|Dwyane|Wade/.test("Dwyane3") // true
選擇符會(huì)包括它前后的多個(gè)字符,比如/ab|cd/指的是匹配ab或cd,而不是指匹配b或者c。如果想修改這個(gè)行為,可以使用圓括號(hào)。
/a( | )b/.test("a b"); // true轉(zhuǎn)義符
正則表達(dá)式中那些有特殊含義的元字符,如果要匹配它們本身,就需要在它們前面要加上反斜杠。
/1+1/.test("1+1"); // false /1+1/.test("1+1"); // true
正則表達(dá)式中,需要反斜杠轉(zhuǎn)義的,一共有12個(gè)字符:^、.、[、$、(、)、|、*、+、?、{和。
特殊字符正則表達(dá)式對(duì)一些不能打印的特殊字符,提供了表達(dá)方法。
n 匹配換行鍵
r 匹配回車(chē)鍵
t 匹配制表符 tab(U+0009)
v 匹配垂直制表符(U+000B)
f 匹配換頁(yè)符(U+000C)
[b] 匹配退格鍵(U+0008),不要與b混淆
0 匹配null字符(U+0000)
cX 表示Ctrl-[X],其中的X是A-Z之中任一個(gè)英文字母,用來(lái)匹配控制字符
字符類(lèi)字符類(lèi)(class)表示有一系列字符可供選擇,只要匹配其中一個(gè)就可以了。所有可供選擇的字符都放在方括號(hào)內(nèi),比如[abc] 表示a、b、c之中任選一個(gè)匹配。
/[abc]/.test("Dwyane"); // true
有兩個(gè)字符在字符類(lèi)中有特殊含義
1.脫子符(^)
如果方括號(hào)內(nèi)的第一個(gè)字符是[^],則表示除了字符類(lèi)之中的字符,其他字符都可以匹配。比如1 表示a、b、c之外都可以匹配。
/[^abc]/.test("Test"); // true
如果方括號(hào)內(nèi)沒(méi)有其他字符,即只有[^],就表示匹配一切字符,其中包括換行符。上文提到的點(diǎn)字符(.)是不包括換行符的。
/wa.e/.test("wa e"); // false /wa[^]/.test("wa e"); // true
2.連字符(-)
連字符(-)表示字符的連續(xù)范圍。比如[0123456789]可以寫(xiě)成[0-9],[A-Z]表示26個(gè)大寫(xiě)字母。
/a-z/.test("b"); // false /[a-z].test("b"); // true預(yù)定義模式
預(yù)定義模式指的是某些常見(jiàn)模式的簡(jiǎn)寫(xiě)方式。
- d 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9] - D 匹配所有0-9以外的字符,相當(dāng)于[^0-9] - w 匹配任意的字母、數(shù)字和下劃線(xiàn),相當(dāng)于[A-Za-z0-9_] - W 除所有字母、數(shù)字和下劃線(xiàn)以外的字符,相當(dāng)于[^A-Za-z0-9_] - s 匹配空格(包括換行符、制表符、空格符等),相等于[ vf] - S 匹配非空格的字符,相當(dāng)于[^ vf] - 匹配詞的邊界 - B 匹配非詞邊界,即在詞的內(nèi)部
/w/.test("wade03"); // true重復(fù)類(lèi)
模式的精確匹配次數(shù),使用大括號(hào)({})。{n}表示恰好重復(fù)n次,{n,}表示至少重復(fù)n次,{n,m}表示重復(fù)不少于n次,不多于m次。
/te{2}st/.test("teest"); // true /te{2,5}st/.test("teeeeeest"); // false量詞符
量詞符用來(lái)設(shè)定某個(gè)模式出現(xiàn)的次數(shù)。
? 問(wèn)號(hào)表示某個(gè)模式出現(xiàn)0次或1次,等同于{0, 1}
星號(hào)表示某個(gè)模式出現(xiàn)0次或多次,等同于{0,}
加號(hào)表示某個(gè)模式出現(xiàn)1次或多次,等同于{1,}
// t 出現(xiàn)0次或1次 /t?est/.test("test"); // true /t?est/.test("est"); // true // t 出現(xiàn)0次或多次 /t*est/.test("tttest"); // true /t*est/.test("est"); // true // t 出現(xiàn)1次或多次 /t+est/.test("ttest"); // true /t+est/.test("est"); // false貪婪模式
上文中量詞符,默認(rèn)情況下都是最大可能匹配,即匹配直到下一個(gè)字符不滿(mǎn)足匹配規(guī)則為止。這被稱(chēng)為貪婪模式。
var str= "aaa"; str.match(/a+/); // ["aaa"]
如果想將貪婪模式改為非貪婪模式,可以在量詞符后面加一個(gè)問(wèn)號(hào)(?)。
+?:表示某個(gè)模式出現(xiàn)1次或多次,匹配時(shí)采用非貪婪模式。
*?:表示某個(gè)模式出現(xiàn)0次或多次,匹配時(shí)采用非貪婪模式。
??:表格某個(gè)模式出現(xiàn)0次或1次,匹配時(shí)采用非貪婪模式。
var str = "aaa"; str.match(/a+/); // ["a"]修飾符
修飾符(modifier)表示模式的附加規(guī)則,放在正則模式的最尾部。
g :全局匹配(global),正則對(duì)象將匹配全部符合條件的結(jié)果,主要用于搜索和替換
i :忽略大小寫(xiě)(ignorecase)
m :^和$可以匹配行首和行尾了,即^和$會(huì)識(shí)別換行符(n)
// 正則模式不含g修飾符,每次都是從字符串頭部開(kāi)始匹配。 var regex = /b/; var str = "abba"; regex.test(str); // true regex.test(str); // true // 正則模式含有g(shù)修飾符,每次都是從上一次匹配成功處,開(kāi)始向后匹配。由于只有一個(gè)b,第二次就失敗了 var regex = /b/g; var str = "aba"; regex.test(str); // true regex.test(str); // false // 加了i修飾符以后,不考慮大小寫(xiě),所以模式abc匹配字符串ABC /abc/.test("ABC") // false /abc/i.test("ABC") // true // 字符串結(jié)尾處有一個(gè)換行符。如果不加m修飾符,為false。加上以后,$可以匹配行尾 /world$/.test("hello world ") // false /world$/m.test("hello world ") // true組匹配
正則表達(dá)式的括號(hào)表示分組匹配,括號(hào)中的模式可以用來(lái)匹配分組的內(nèi)容。
// 第一個(gè)模式?jīng)]有括號(hào),結(jié)果+只表示重復(fù)字母t。第二個(gè)模式有括號(hào),結(jié)果+就表示匹配test /test+/.test("testt") // true /(test)+/.test("testtest") // true
(?:x):非捕獲組(Non-capturing group),表示不返回該組匹配的內(nèi)容,即匹配的結(jié)果中不計(jì)入這個(gè)括號(hào)。
// 正常匹配 var url = /(http|ftp)://([^/ ]+)(/[^ ]*)?/; url.exec("http://google.com/"); // ["http://google.com/", "http", "google.com", "/"] // 非捕獲組匹配 var url = /(?:http|ftp)://([^/ ]+)(/[^ ]*)?/; url.exec("http://google.com/"); // ["http://google.com/", "google.com", "/"]
x(?=y):先行斷言(Positive look-ahead),x只有在y前面才匹配,y不會(huì)被計(jì)入返回結(jié)果。
/d+(?=%)/.test("23%"); // true /d+(?=%)/.test("2A%"); // false
x(?!y):先行否定斷言(Negative look-ahead),x只有不在y前面才匹配,y不會(huì)被計(jì)入返回結(jié)果。
/d+(?!%)/.test("2%"); // false
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97780.html
摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說(shuō)明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門(mén):初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對(duì)象,JavaScript 的 RegExp 類(lèi)表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...
摘要:返回值是被找到的值。支持正則表達(dá)式的對(duì)象的方法方法檢索與正則表達(dá)式相匹配的子字符串。該數(shù)組是通過(guò)在指定的邊界處將字符串分割成子串創(chuàng)建的。注意報(bào)錯(cuò)正確示例附表修飾符修飾符描述執(zhí)行對(duì)大小寫(xiě)不敏感的匹配。查找以十六進(jìn)制數(shù)規(guī)定的字符。 什么是 RegExp? RegExp 是正則表達(dá)式的縮寫(xiě)。 當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來(lái)描述要檢索的內(nèi)容。RegExp 就是這種模式。 簡(jiǎn)單的模式可以...
摘要:對(duì)象對(duì)象對(duì)象表示正則表達(dá)式,它是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。查找以十六進(jìn)制數(shù)規(guī)定的字符。支持正則表達(dá)式的對(duì)象的方法方法描述檢索與正則表達(dá)式相匹配的值。替換與正則表達(dá)式匹配的子串。 RegExp對(duì)象 RegExp 對(duì)象 RegExp 對(duì)象表示正則表達(dá)式,它是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。 直接量語(yǔ)法 /pattern/attributes 創(chuàng)建 RegExp 對(duì)象的語(yǔ)法 new R...
摘要:直接調(diào)用構(gòu)造函數(shù)使用,一個(gè)可能含某種匹配模式的路徑字符串作為它的必選參數(shù),它返回一個(gè)正則對(duì)象。有兩個(gè)方法返回一個(gè)正則對(duì)象,效果與調(diào)用構(gòu)造函數(shù)一樣返回一個(gè)函數(shù),該函數(shù)與下面的返回的函數(shù)功能一樣方法,同樣接收一個(gè)路徑字符串。 code in here使用path-to-regexp,我們可以在路徑字符串中使用正則。如/:foo*/:bar?、/icon-:foo(d+).png等。像exp...
摘要:返回值一個(gè)新的對(duì)象,具有指定的模式和標(biāo)志。參數(shù)作用正則表達(dá)式規(guī)定匹配的類(lèi)型。如果未找到匹配,則返回值為。返回值請(qǐng)注意,無(wú)論是否是全局模式,都會(huì)把完整的細(xì)節(jié)添加到它返回的數(shù)組中。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割。 前言 PS:2018/03/27 優(yōu)化文章格式,新增部分測(cè)試代碼說(shuō)起正則其實(shí)大家都會(huì)經(jīng)常接觸到,前端小到校驗(yàn),大到插件隨處可見(jiàn),簡(jiǎn)單的方法也能實(shí)現(xiàn)需求,不過(guò)缺乏靈活性...
摘要:目錄導(dǎo)語(yǔ)理解正則表達(dá)式模式的規(guī)則字符串和正則實(shí)例的屬性和方法檢索實(shí)例小結(jié)導(dǎo)語(yǔ)正則表達(dá)式是處理字符串的一門(mén)藝術(shù)手法,應(yīng)用場(chǎng)景經(jīng)常出現(xiàn)在表單驗(yàn)證部分高級(jí)程序設(shè)計(jì)一書(shū)開(kāi)篇提到,這門(mén)語(yǔ)言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從誕生那一刻就 目錄 導(dǎo)語(yǔ) 1.理解正則表達(dá)式 2.模式的規(guī)則 3.字符串和正則實(shí)例的屬性和方法 4.檢索實(shí)例 5. 小結(jié) 導(dǎo)語(yǔ) 正則表達(dá)式是處理字符串的一門(mén)藝...
閱讀 996·2023-04-25 14:45
閱讀 2773·2021-09-30 09:59
閱讀 3114·2021-09-22 15:48
閱讀 2425·2019-08-30 15:55
閱讀 3467·2019-08-30 15:44
閱讀 535·2019-08-29 14:07
閱讀 3412·2019-08-26 13:45
閱讀 536·2019-08-26 11:31