超全的正規表示式講解

2021-10-05 07:45:51 字數 2504 閱讀 1111

正規表示式(regular expression,在**中常簡寫為reg)使用單個字串來描述、匹配一系列符合某個句法規則的字串搜尋模式。搜尋模式可用於文字搜尋和文字替換。

當您檢索某個文字時,可以使用一種模式來描述要檢索的內容。正規表示式是進行字串匹配檢測的,當我們為了匹配特殊字元或有特殊匹配原則的字元的時候,正規表示式是最佳的選擇。

正規表示式通常用於兩種任務:1.驗證,2.搜尋/替換。用於驗證時,通常需要在前後分別加上^和katex parse error: undefined control sequence: \b at position 51: …定,此外,也有可能要在前後加上\̲b̲而不是^和$。

方法一:字面量形式定義正則

方法二:通過regexp建構函式定義正則

通過建構函式regexp來定義正則,語法是:

var patt1 = new regexp(引數一,可選的引數二);

兩個引數都是字串,引數一是正則主體,有時需要對其進行雙重轉義,引數二是可選的,為修飾符i/g/m。 i代表忽略大小寫,m代表執行多次,g代表全域性匹配,匹配滿足條件所有的。

無論方法一還是用方法二定義正則,效果都是一樣的,一般我們習慣用字面量形式定義正則。比如下面兩種寫法是等價的:

var reg = /xyz/i

var reg = regexp(『xyz』, 『i』)

下面這個表很重要,每個元字元代表什麼意思我們要清楚

比如說 [ a-z ]意思是查詢a-z之間的任意字元,[0-9]意思是匹配任意0-9之間的數字。而\是轉義字元,比如要匹配 **.**或者*或者\本身那正則應該寫成\ . 或 * 或 \ 再比如var num = /^ \d $ / 這裡num值驗證的是3位數字,^代表字串開始,$代表字串結束,\d代表數字,代表重複3次。

正規表示式例項的test方法

regexp.prototype.test( ) 正規表示式的test方法返回乙個布林值true或false,表示當前模式是否能匹配引數字串。

正規表示式例項的exec方法

regexp.prototype.exec( ) 正規表示式的exec方法,如果匹配成功就返回乙個陣列,陣列成員是匹配成功的子字串,否則返回null。

字串的例項方法match

string.prototype.match() 字串例項物件的match方法對字串進行正則匹配,返回匹配結果;

字串的例項方法search

string.prototype.search() 字串物件的search方法,返回第乙個滿足條件的匹配結果在整個字串中的位置。如果沒有任何匹配,則返回-1。

在講正則捕獲之前先看乙個常見的需求:寫乙個驗證手機號是否輸入正確的案例。

思考:手機號都是11位數,並且第一位都是1,所以要寫固定,第二位是可以是3,4,5,6,7,8中的任意一位,剩下的九位0~9都可以,所以\d要重複9次。所以可以寫成/^ 1[3,4,5,6,7,8]\d $/

剛才的例子是判斷乙個字串是否符合要求,但正則不僅僅這麼簡單,還可以進行分組提取。

正則給我們提供了乙個exec()方法,如果匹配成功,返回乙個陣列array,匹配失敗會返回null,我們可以利用此方法提取**號的區號和本地號碼,如:

上述的reg所包含的正則帶有(),可以為其分組,(\d|\d)為一組,(\d)為一組。成功列印出來,返回陣列格式,這樣我們就可以輕鬆拿到想要的號段。

正規表示式中如果有分組,那麼分組匹配的內容,就會被儲存到regexp.$1-regexp.$99中,這種現象叫做正規表示式的捕獲。可能會有些不清楚,解釋一下:regexp代表的就是正則,$1-$99代表的是捕獲到的每個字段,存在1-99當中。那麼regexp.$1代表的就是第乙個字段,regexp.$2代表的是第二個字段。

舉個例子,還拿剛才的**號來說,它有分組,乙個是區號,乙個是本地號碼,列印出來是乙個陣列,那麼我們就可以regexp.$1和regexp.$2捕獲到這兩個分組的值。

正規表示式全 常用的正規表示式

數字 0 9 n位的數字 d 至少n位的數字 d m n位的數字 d 零和非零開頭的數字 0 1 9 非零開頭的最多帶兩位小數的數字 1 9 0 9 帶1 2位小數的正數或負數 d d 正數 負數 和小數 d d 有兩位小數的正實數 0 9 0 9 有1 3位小數的正實數 0 9 0 9 非零的正整...

正規表示式(全)

之前學習過正規表示式,沒有系統的總結過,今天尋找一篇分享出來。網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 ...

正規表示式詳細講解

什麼是正規表示式?正規表示式通常被用來檢索 替換那些符合某個規則的文字,使用一系列特殊字元模式,來表示某一類字串。元字元 元字元含義 將下乙個字元標記符 或乙個向後引用 或乙個八進位制轉義符 匹配輸入字行首 匹配輸入行尾 匹配前面的子表示式任意次 匹配前面的子表示式一次或多次 大於等於1次 匹配前面...