Swift - 正則表達(dá)式(RegularExpression)的使用(附用戶名狐肢、郵箱、URL等常用格式驗(yàn)證)

使用NSRegularExpression類進(jìn)行正則匹配:一個(gè)正則表達(dá)式的字符串往产,生成NSRegularExpression對(duì)象溺蕉,再用該對(duì)象來匹配輸入字符串,返回匹配結(jié)果爷耀。

1甘桑,為便于使用,先定義一個(gè)正則匹配工具類(內(nèi)部封裝使用NSRegularExpression)

import Foundation

struct MyRegex {

? ? let regex: NSRegularExpression?

? ? init(_ pattern: String) {

? ? ? ? regex = try? NSRegularExpression(pattern: pattern,

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options: .CaseInsensitive)

? ? }



? ? func match(input: String) -> Bool {


? ? ? ? if let matches = regex?.matchesInString(input,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options: [],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? range: NSMakeRange(0, (input as NSString).length)) {

? ? ? ? ? ? return matches.count > 0


? ? ? ? }else {


? ? ? ? ? ? return false


? ? ? ? }

? ? }

}


使用如下:

let?mailPattern =?"^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"

let?matcher =?MyRegex(mailPattern)

let?maybeMailAddress =?"admin@hangge.com"

if?matcher.match(maybeMailAddress) {

????print("郵箱地址格式正確")

}else{

????print("郵箱地址格式有誤")

}

2,自定義 =~ 運(yùn)算符跑杭,方便正則匹配

像Ruby和Perl這樣的語言铆帽,都有專門的=~運(yùn)算符來進(jìn)行正則匹配。而在Swift中德谅,我們可以通過操作符的重載來實(shí)現(xiàn)爹橱。

infix?operator?=~ {

????associativity none

????precedence 130

}

func?=~ (lhs:?String, rhs:?String) ->?Bool?{

????return?MyRegex(rhs).match(lhs)?//需要前面定義的MyRegex配合

}

使用如下:

if?"admin@hangge.com"?=~?"^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"{

????print("郵箱地址格式正確")

}else{

????print("郵箱地址格式有誤")

}


3,其他常用格式驗(yàn)證的正則表達(dá)式

//用戶名驗(yàn)證(允許使用小寫字母窄做、數(shù)字愧驱、下滑線、橫杠椭盏,一共3~16個(gè)字符)

^[a-z0-9_-]{3,16}$


//Email驗(yàn)證

^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$

//手機(jī)號(hào)碼驗(yàn)證

^1[0-9]{10}$

//URL驗(yàn)證

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

//IP地址驗(yàn)證

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

//html標(biāo)簽驗(yàn)證

^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$

原文:http://www.hangge.com/blog/cache/detail_799.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末组砚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掏颊,更是在濱河造成了極大的恐慌糟红,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乌叶,死亡現(xiàn)場(chǎng)離奇詭異盆偿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)准浴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門事扭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乐横,你說我怎么就攤上這事求橄。” “怎么了晰奖?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵谈撒,是天一觀的道長。 經(jīng)常有香客問我匾南,道長啃匿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任蛆楞,我火速辦了婚禮溯乒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豹爹。我一直安慰自己裆悄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布臂聋。 她就那樣靜靜地躺著光稼,像睡著了一般或南。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艾君,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天采够,我揣著相機(jī)與錄音,去河邊找鬼冰垄。 笑死蹬癌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虹茶。 我是一名探鬼主播逝薪,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝴罪!你這毒婦竟也來了董济?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤洲炊,失蹤者是張志新(化名)和其女友劉穎感局,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暂衡,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年崖瞭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狂巢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡书聚,死狀恐怖唧领,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雌续,我是刑警寧澤斩个,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站驯杜,受9級(jí)特大地震影響受啥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸽心,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一滚局、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顽频,春花似錦藤肢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽省骂。三九已至,卻和暖如春最住,著一層夾襖步出監(jiān)牢的瞬間钞澳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工温学, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留略贮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓仗岖,卻偏偏與公主長得像逃延,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轧拄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345