正規表示式 開發常用的正規表示式

2021-07-11 04:16:56 字數 3221 閱讀 7761

正規表示式是一種用來進行文字匹配的工具,其語法優美簡潔。在開發中,查詢、對比以及匹配字串是家常便飯的業務,通過正規表示式我們將這些業務描述成某些需求規則,來讓我們的**更美觀、實用。例如我們要驗證使用者輸入的密碼長度是否滿足6~18位的長度,新手最常見的驗證方式是判斷輸入的密碼長度

return (textfield.text.length >= 6 && textfield.text.leng <= 18);

儘管這種判斷方式沒有任何問題,而上面的驗證換做正規表示式的匹配字元就顯得短小精悍 ^.還

有,大部

分的固定

**都是

0區號−

八位數字

的格式,

那麼正則

表示式的

匹配如下

0\d2−

?\d8

再比如,對於密碼強度的認證。如今的密碼應該包括乙個或以上的大寫字母以及小寫字母,對此正規表示式的匹配是

(^.[a-z]+.[a-z]+.*|.

∗[a−

z]+.

∗[a−

z]+.

∗ )

表示式字元解析

如果是新手開發者,那麼很有可能不理解上面的正規表示式。那麼我們先看第乙個匹配條件,匹配6-18位的密碼長度。根據題目的要求,就能夠輕易的判斷出表示6-18位。其中,匹配字元重複n次;匹配重複n次或更多次;匹配重複n到m之間次數。

那麼讀者對^、.和三個

符號可能

不明所以

。和屬於特殊符號,前者表示匹配字串的開頭,後者表示匹配字串的結尾。由於我們有時需要在一段很長的字串中匹配某些小片段字串時(比如在**混編中匹配長字串中留空的表情符號),適當使用這兩個符號可以減少匹配次數,提高執行效率。

那麼結合這幾個字元代表含義,可以得出.符號表示任一字元(除換行符之外)。那麼還可以得出這個特殊符號表示的是前乙個符號代表的位數。結合起來說^.匹配

一段6至

18位長度

的字串

,所以可

以用來驗

證密碼長

度當然了

,.字元

的匹配率

太高,更

多時候我

們需要匹

配的是具

體到數字

或者字母

,甚至準

確的數字

和字母。

那麼除了

.字元以

外,還有

\d用來表

示任意的

單個數字

,\w表示

任意乙個

字母或數

字或者直

接使用0

−9的任

意數字表

示具體數

字。而特

殊符號?

表示前一

個字元為

0或者1

個。所以

上面的0

\d2−?

\d8匹配了以數字0開頭,接著兩個數字,後面跟著-號跟八個數字,然後結尾的字串,不管是010-88888888,還是02098989898都能進行正確匹配。

最後的乙個表示式可能是最複雜的表示式,根據上面對部分符號的解析。我們可以把

^.[a-z]+.[a-z]+.*|.

∗[a−

z]+.

∗[a−

z]+.

∗ 拆分成 ^.[a-z]+.[a-z]+.*跟.

∗[a−

z]+.

∗[a−

z]+.

∗ 這兩個單獨的表示式,而中間的|不難猜到就是邏輯的或。我們將對前乙個進行拆分,來一步步識別這個表示式的匹配規則。這裡教大家我拆分表示式的方法:我把表示式的字元分為兩類:值表達和修飾表達。所謂值表達就是說這個符號表示了某個值,就像\d表示數字,.表示任意非換行符字元。修飾表達用來修飾值達成某種條件,比如表示前面乙個值重複兩次,表示前乙個值重複0次或者更多次。根據這種方法,那麼^.[a-z]+.[a-z]+.

可以拆分成部分:^

、 .* 、 [a-z]+ 、 [a-z]+。

^$就不再多說。

.這裡要介紹的就是表示前乙個值符號重複任意次數。

[a-z]+中-表示從左邊的值到右邊的值之間所有值形成的閉集合;方括號表示的值必須是括號中間集合的子集,要注意的是括號裡面可以有多個集合,比如[a-z0-9a-z]表示匹配任意乙個大小寫字母或數字;+同*有點像,但是+表示的是至少乙個的重複值。

結合上面的解析,那麼^.[a-z]+.[a-z]+.*表示

以任意數

量的字元

開頭,然

後跟著一

個大寫字

母,大寫

字母後面

有任意數

量的字元

以及乙個

小寫字母

,然後又

是任意數

量的數字

、字母或

者字元。

而.∗[

a−z]

+.∗[

a−z]

+.∗

#import "uitextfield+lxdvalidate.h"

@implementation

uitextfield (lxdvalidate)

- (bool)isempty

- (bool)validateemail

@[a-z-a-z]\\.[a-za-z]$"];

}- (bool)validateauthen

$"];

}- (bool)validatepassword

$"; //長度

nsstring * number = @"^\\w*\\d+\\w*$"; //數字

nsstring * lower = @"^\\w*[a-z]+\\w*$"; //小寫字母

nsstring * upper = @"^\\w*[a-z]+\\w*$"; //大寫字母

return [self validatewithregexp: length] && [self validatewithregexp: number] && [self validatewithregexp: lower] && [self validatewithregexp: upper];

}- (bool)validatephonenumber

$";return [self validatewithregexp: reg];

}- (bool)validatewithregexp: (nsstring *)regexp

@end

正規表示式 常用正規表示式

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 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 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...

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

數字 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 非零的正整...