在本章中,你将学会常用的正则表达式的使用方法。

前言

和​​Apple​​​官网或者网上分享的教程类文章不同,我将以实际开发角度讲述​​Swift​​​语言的一些概念和用法,方便大家更好地学习和掌握​​Swift​​语言。

这同时也是对自己学习​​Swift​​语言过程的知识整理。

如有错误,以你为准。

项目创建

我们新建一个​​PlayGround​​​项目,命名为​​SwiftRegularExpression​​。

Swift实用小册26: 正则表达式的使用_正则表达式

正则表达式的定义

正则表达式,是记录文本规则的代码。

系统接收一串字符时,在业务上需要对这段字符代码进行规则判断,示例:电话号码是否合法。

用来对接收字符进行判断的规则,我们可以称之为正则表达式。

网址-正则表达式

我们使用​​NSPredicate​​​关键字构建正则表达式,使用​​NSPredicate​​可以定义模糊查询条件,我们可以通过匹配的方式判断接收的参数是否符合我们设置的条件。示例:

import UIKit

var url = "https://j.cn/user/3897092103223517"

func errorURL(url: String) -> Bool {
let currrentURL = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"
let regextestURL = NSPredicate(format: "SELF MATCHES %@", currrentURL)
if regextestURL.evaluate(with: url) == false {
return false
} else {
return true
}
}

if errorURL(url: url) {
print("网址正确")
} else {
print("网址不正确")
}

上述代码中,我们定义了一个变量​​url​​,赋值为我们掘金的账号地址。

然后定义了一个​​errorURL​​​方法,接收​​String​​​类型的​​url​​​,返回一个​​Bool​​的结果。

在方法内,我们定义了一个网址地址的正则表达式​​currrentURL​​​,然后我们通过​​NSPredicate​​​关键字对接收到的​​url​​​和​​currrentURL​​​正则表达式做匹配,如果匹配成功,则返回​​true​​​,如果不成功,则返回​​false​​。

然后我们通过​​if-else​​的方法验证下结果。

Swift实用小册26: 正则表达式的使用_赋值_02

手机号-正则表达式

正则表达式在我们实际开发过程中用的很多。

在登录注册页面,我们常常需要对手机号进行校验,除了之前的章节中提过的方法外,我们也可以使用正则表达式作为验证手机号正确与否的判断依据。示例:

var phoneNumber = “16666666666"

func validatedPhone(phoneStr: String) -> Bool {
let phone = phoneStr.trimmingCharacters(in: CharacterSet.whitespaces)
let regex = "^((13[0-9])|(14[5,7])|(15[^4,\\D]) |(17[0,0-9])|(18[0,0-9]))\\d{8}$"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let result = predicate.evaluate(with: phone)
return result
}

if validatedPhone(phoneStr: phoneNumber) {
print("手机号正确")
} else {
print("手机号不正确")
}

上述代码中,我们声明了一个变量​​phoneNumber​​,并赋值手机号的字符串。

然后定义了一个​​validatedPhone​​方法,接收手机号,然后返回结果。

这里我们使用的正则表达式​​regex​​​的规则为使用“​​|​​​”分开,我们判断常用的三大运营商的手机号规则,然后我们通过​​NSPredicate​​​关键字对接收到的​​phoneStr​​​和​​regex​​​正则表达式做匹配,如果匹配成功,则返回​​true​​​,如果不成功,则返回​​false​​。

然后我们通过​​if-else​​的方法验证下结果。

Swift实用小册26: 正则表达式的使用_赋值_03

密码-正则表达式

上面我们写完了手机号的校验,下面我们再看看密码的正则表达式的方法。

密码的强度,我们要求是包含大小写字母和数字的组合,不能使用特殊字符,长度在​​8-10​​之间。示例:

var password = “"

func validatedPassword(passwordStr: String) -> Bool {
let password = passwordStr.trimmingCharacters(in: CharacterSet.whitespaces)
let regex = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$"
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
let result = predicate.evaluate(with: password)
return result
}

if validatedPassword(passwordStr: password) {
print("密码正确")
} else {
print("密码不正确")
}

上述代码中,我们声明了一个变量​​password​​,并赋值空字符串

然后定义了一个​​validatedPassword​​方法,接收密码,然后返回结果。

在方法内,我们定义了一个密码规则的正则表达式​​regex​​​,然后我们通过​​NSPredicate​​​关键字对接收到的​​passwordStr​​​和​​regex​​​正则表达式做匹配,如果匹配成功,则返回​​true​​​,如果不成功,则返回​​false​​。

然后我们通过​​if-else​​的方法验证下结果。

Swift实用小册26: 正则表达式的使用_iOS_04

以上就是本章的全部内容。

快来动手试试吧!

如果本专栏对你有帮助,不妨点赞、评论、关注~