可以戳後面鏈接js裏的正則表達式(2)。
示例1:
示例2:
示例3:
示例1:
+和*的區別:
+:匹配壹個或多個字符(或字符集),即必須至少匹配壹次,至少有壹個或多個匹配,而*:匹配零個或任意數量的字符(或字符集),也可能沒有匹配。
例如,以下兩個示例應用了差異:電子郵件匹配規則
示例2:
示例3:
示例1:
總結:問題:
示例1:匹配重復字符/x{n}/
例2:設置重復匹配次數的間隔/x{m,n}/匹配x個字符最少m次最多n次。
示例3:重復匹配0到n次/x{0,n}/,匹配字符x,0次...n次。
例4:匹配至少要重復多少次?給出最小重復次數,不壹定要給出最大值/{n,}/才能至少重復n次,或者必須重復n次以上。
貪婪元字符:*、+、{n、}
惰性元字符:*?, +?,{n,}?
概念:對表達式進行分組和分類也是更大表達式的壹部分。將壹個表達式劃分為壹系列子表達式的目的是將這些子表達式用作獨立的元素。
模式:子表達式必須用(和)括起來。註意(左括號和右括號)是元字符。如果妳想匹配自己,小心逃避(和)。
示例1:
子表達式允許在多個級別嵌套,但是要適可而止。多個嵌套的子表達式可以構造功能強大的正則表達式,但是由於多層次嵌套,正則表達式會很難閱讀和理解,但是硬骨頭總是要啃的。如果拆分表達式,壹次只分析理解壹個子表達式,按照先內後外的原則拆分,而不是從第壹個字符開始壹個字符壹個字符的嘗試,可能會好很多。
示例1:匹配合法的IP地址。
這個圖案挺長的,看起來很復雜很復雜。它由許多子形式組成,四個子表達式。
((\d{1,2 })|(1 \ D { 2 })|(2 [0-4] \ d)|(25[0-5])),從左到右,(\ d {65438+) D{2})表示以1開頭的任意三位數(即100-199),(2[0-4]\ D)表示匹配意思是妳只需要匹配四個子表達式中的任意壹個,以及下面的\用來匹配元字符本身,而後面的{3}表示需要重復三次,直到最後再次重復數值範圍,在這個過程中省略了最後壹組用來匹配IP地址的數字。通過限制四組數字的取值範圍為0~255,這種模式只能合法匹配。
總結:
子表達式非常強大和靈活。它們將同壹個表達式的所有相關部分組合起來,形成壹個強大的匹配模式。子表達式必須由(右括號和左括號)定義,子表達式可以嵌套多層。
目的:準確設置和控制重復元字符的目標,準確定義|運算符的OR條件。
對於replace(常規規則、要替換的文本或函數function)方法中的第二個參數,它可以作為函數傳入,而不僅僅是字符串值。在這種情況下,每當匹配的子字符串出現在原始字符串中時,該函數將執行壹次,匹配的子字符串將被傳入,原子字符將被函數的返回值替換:
例如
總結:
整篇文章主要是對上壹節的補充。常規內容太長,容易讓人想吐槽。主要講的是使用x+進行重復匹配,也就是元字符加號(+)的使用和用*匹配零個或多個字符。匹配零個或壹個字符,只能匹配壹個字符。本文對它們進行了簡單的比較,子表達式的使用,嵌套,replace()方法中第二個參數的特殊字符的使用,以及它作為函數的使用。在平時,把第二個參數當成壹個函數是很常見的。當然,正規化是很厲害的,遠不止這些。反正我個人覺得挺復雜的,經常通過。