iOS正則表達(dá)式

歡迎關(guān)注我的微博,一起學(xué)習(xí)進(jìn)步

timg.jpg

寫(xiě)在前面

一直在用正則表達(dá)式沙兰,基本上都是匹配國(guó)內(nèi)手機(jī)號(hào)碼虑省、郵箱等,近期需要匹配其他國(guó)家電話(huà)僧凰、郵箱探颈,正好自己研究一下正則表達(dá)式。
正則表達(dá)式由原意字符和元字符構(gòu)成(原意字符表達(dá)字符原有意思训措,元字符則表達(dá)規(guī)定的特殊意義)
示例:^[0-9]+$
上面就是一個(gè)完整的正則表達(dá)式伪节,表示 一個(gè)只能由0到9(包含0和9)的數(shù)字 組成的至少一位的字符串,下面我們就來(lái)一起看一下正則表達(dá)式的基本用法光羞。

語(yǔ)法

正則語(yǔ)法中最基礎(chǔ)的表達(dá)式符號(hào)有以下四個(gè)

^ $ ** . ** [ ]
指定字符串開(kāi)頭 指定字符串結(jié)尾 除 \r\n以外的 通配符 包含[]內(nèi)的任意一個(gè)字符(至少1個(gè))

(\r :回車(chē); \n:換行 )

  • ^one 表示一個(gè)以“abc”開(kāi)始的字符串("one people","one dog")怀大;
    類(lèi)似于-(BOOL) hasPrefix:(NSString *) astring;
  • dog$:表示所以以”dog”結(jié)尾的字符串("a good dog"纱兑,"a bad dog");
    類(lèi)似于:- (BOOL)hasSuffix:(NSString *) aString;
  • ^iPhone& 表示有且只有這一個(gè)不重復(fù)的字段化借,
    相當(dāng)于==
  • originalCharactor 單純的原意字符表示包含該字符串潜慎,
    相當(dāng)于- (BOOL)containsString:(NSString *) aString,
  • "." 也就是“點(diǎn)”,匹配任何單個(gè)字符(不包括回車(chē)換行) 1.a 1后面跟任意一個(gè)字符再跟一個(gè)a("1Qa","1@a","12a")
  • [ab]字符串中有一個(gè)a或b ("a","b") __ 注意區(qū)分 __^[ab]$這是一個(gè)為"a"或"b"的字符串
    [a-d]:表示一個(gè)字符串包含小寫(xiě)的'a'到'd'中的一個(gè)蓖康;
    ^[a-zA-Z]:表示一個(gè)以字母開(kāi)頭的字符串铐炫;
    [0-9]a:表示a前有一位的數(shù)字;
    [a-zA-Z0-9]$:表示一個(gè)字符串以一個(gè)字母或數(shù)字結(jié)束蒜焊。
{ } * + ?
{}前一字符出現(xiàn)次數(shù)由{}內(nèi)數(shù)字決定 *前一字符出現(xiàn) 0-N次 +前一字符出現(xiàn)1-N次 倒信?前一字符出現(xiàn)0-1次

( ) 域段:可與其他字符結(jié)合使用,表示()內(nèi)整個(gè)區(qū)域?yàn)橐粋€(gè)整體

  • {}設(shè)置"{}"前一字符重復(fù)的具體范圍泳梆。例如:
      “ab{4}”:字符串包含“一個(gè)a跟著4個(gè)b”(”abbbb”)鳖悠;
      “ab{1,}”:字符串包含“一個(gè)a跟著至少1個(gè)b”(”ab”,”abb”,”abbb”,……);
      “ab{2,5}”:表示一個(gè)字符串有一個(gè)a跟著2到5個(gè)b(”abb”,"abbb",”abbbb”,"abbbbb")优妙。
  • ab*:字符串包含“一個(gè)a后面跟著0-N個(gè)b”("a", "ab", "abbb",……)乘综;
  • ab+:字符串包含“一個(gè)a后面跟著1-N個(gè)b”( "ab", "abbb",……);
  • ab?:字符串包含“一個(gè)a后面跟著0-1個(gè)b”( ”a”, “ab”)套硼;
  • 1(abc)* :字符串包含“1后跟著0個(gè)或若干個(gè) abc ”("1","1abc","1abcabc",......);
    可以看出卡辰,*等價(jià)于{0,}熟菲,+等價(jià)于{1,}朴恳,?等價(jià)于{0抄罕,1}
    注:{}內(nèi)可以沒(méi)有上限,但是不能沒(méi)有下限于颖!例如“ab{,5}”是錯(cuò)誤的寫(xiě)法

等價(jià)

由上文可以看出呆贿,在正則表達(dá)式中有些東西是等價(jià)的,等價(jià)是正則表達(dá)式中的重要概念森渐,也是讓初學(xué)者一臉懵逼的存在做入,但如果將等價(jià)恢復(fù)成原有語(yǔ)法記憶就比較簡(jiǎn)單了。

?,*,+,\d,\w 都是等價(jià)字符
“ | ”表示“或”操作同衣,在[]內(nèi)第一位使用用'^'表示匹配除[]內(nèi)的其他字符

?等價(jià)于匹配長(zhǎng)度{0,1}
  *等價(jià)于匹配長(zhǎng)度{0,}
  +等價(jià)于匹配長(zhǎng)度{1,}
  \d等價(jià)于[0-9]
  \D等價(jià)于[^0-9] :匹配一個(gè)非數(shù)字字符("aabbcd","@#$abcd")
  \w等價(jià)于[A-Za-z_0-9]
  \W等價(jià)于[^A-Za-z_0-9] :匹配 非字母數(shù)字 的字符

常用正則表達(dá)式

  • 匹配國(guó)內(nèi)手機(jī)號(hào)
    正則表達(dá)式 ^1[3,4,5,7,8][0-9]{9}$(13/14/15/17/18開(kāi)頭竟块,11位)
    iOS語(yǔ)法
    -(BOOL) validatePhoneNum:(NSString *) phoneNum { NSString *phoneRegex = @"^1[3,4,5,7,8][0-9]{9}$"; NSPredicate *phonePre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; return [phonePre evaluateWithObject:phoneNum]; }
  • 匹配郵箱
    正則表達(dá)式 ^[\w.%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$
    iOS語(yǔ)法 參考手機(jī)號(hào)
  • 匹配QQ號(hào)碼:^[1-9][0-9]{4,14}$(5~15位,不能以0開(kāi)頭耐齐,只能是數(shù)字)
  • 匹配身份證:(^[0-9]{15}$)|([0-9]{17}[0-9X]$)(15位或18位身份證浪秘,18位身份證末位可能為X)

最后附上一個(gè) 在線(xiàn)正則表達(dá)式檢查工具

https://regex101.com/#javascript

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒋情,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耸携,更是在濱河造成了極大的恐慌棵癣,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夺衍,死亡現(xiàn)場(chǎng)離奇詭異狈谊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)沟沙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)河劝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人尝胆,你說(shuō)我怎么就攤上這事丧裁。” “怎么了含衔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵煎娇,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贪染,道長(zhǎng)缓呛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任杭隙,我火速辦了婚禮哟绊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痰憎。我一直安慰自己票髓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布铣耘。 她就那樣靜靜地躺著洽沟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜗细。 梳的紋絲不亂的頭發(fā)上裆操,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音炉媒,去河邊找鬼踪区。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吊骤,可吹牛的內(nèi)容都是我干的缎岗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼白粉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼密强!你這毒婦竟也來(lái)了茅郎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤或渤,失蹤者是張志新(化名)和其女友劉穎系冗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體薪鹦,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掌敬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了池磁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奔害。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖地熄,靈堂內(nèi)的尸體忽然破棺而出华临,到底是詐尸還是另有隱情,我是刑警寧澤端考,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布雅潭,位于F島的核電站,受9級(jí)特大地震影響却特,放射性物質(zhì)發(fā)生泄漏扶供。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一裂明、第九天 我趴在偏房一處隱蔽的房頂上張望椿浓。 院中可真熱鬧,春花似錦闽晦、人聲如沸扳碍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)笋敞。三九已至,卻和暖如春捅儒,著一層夾襖步出監(jiān)牢的瞬間液样,已是汗流浹背振亮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工巧还, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坊秸。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓麸祷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親褒搔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阶牍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一喷面、什么是正則表達(dá)式 正則表達(dá)式,又稱(chēng)正規(guī)表示法走孽,是對(duì)字符串操作的一種邏輯公式惧辈。正則表達(dá)式可以檢測(cè)給定的字符串是否...
    Helen_kay閱讀 2,757評(píng)論 0 2
  • 一、什么是正則表達(dá)式 正則表達(dá)式磕瓷,又稱(chēng)正規(guī)表示法盒齿,是對(duì)字符串操作的一種邏輯公式。正則表達(dá)式可以檢測(cè)給定的字符串是否...
    見(jiàn)哥哥長(zhǎng)高了閱讀 2,009評(píng)論 6 48
  • iOS -正則表達(dá)式的簡(jiǎn)單使用 ?建議收藏困食,用到時(shí)候一查就明白了 下面兩個(gè)方法我用的也不是很熟練边翁,如果有懂得朋友歡...
    xx_cc閱讀 8,563評(píng)論 17 177
  • iOS中使用正則表達(dá)式就不得不提NSRegularExpression,所以我們需要先搞清楚什么是NSRegula...
    sunmumu1222閱讀 2,348評(píng)論 0 4
  • 正則表達(dá)式是對(duì)字符串操作的一種邏輯公式硕盹,就是用事先定義好的一些特定字符符匾、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串...
    杰森_Jason閱讀 883評(píng)論 0 0