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