使用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