Swift正则表达式

基本字符 (单个字符)

  • 不需要转义的字符
类别符号
大写字母ABCDEF…XYZ
小写字母abcdef…xyz
数字0123456789
其他`~!@#%&;:’",<>/
  • 需要进行转义的其他字符
转义方法符号
双反斜杠转义 『\』$^*()-=+[{]}|.?
三反斜杠转义 『\\』\

元字符 (单类字符)

符号类别
.除换行符外的任意字符
\w字母、数字、下划线或汉字
\s任意空白字符,包括换页符、换行符、回车符、制表符、空格
\d数字
\f换页符
\n换行符
\r回车符
\t制表符
\v垂直制表符

反义(元字)符

符号类别
\W非字母、数字、下划线或汉字
\S非空白字符
\D非数字字符
^非后接的字符,可同时接多个字符

限定字符

  • 接在字符或字符表达式后以对其进行限定修饰
贪婪限定字符
  • 当匹配符合多种情况时优先字符数多的情况
    字符串 :“123456789”
    正 则 :"^\d+"
    结 果 :123456789
符号意义
*重复单字符或表达式零次以上(包括零次)
+重复单字符或表达式一次以上(包括一次)
?重复单字符或表达式零或一次
{n}重复单字符或表达式n次
{n,}重复单字符或表达式n次以上(包括n次)
{n,m}重复单字符或表达式n到m次
懒惰限定符
  • 当匹配符合多种情况时优先字符数少的情况
    字符串 :“123456789”
    正 则 :"^\d+?"
    结 果 :1
符号意义
*?重复单字符或表达式零次以上(包括零次)
+?重复单字符或表达式一次以上(包括一次)
??重复单字符或表达式零或一次
{n,}?重复单字符或表达式n次以上(包括n次)
{n,m}?重复单字符或表达式n到m次

定位符

符号意义
^字符串的开始
$字符串的结束
\b单词开始或结束
\B非单词开头或结束的字符

连接符

符号意义
|用于连接两个字符或表达式,可理解为『或』
,用于连接两个字符,可理解为『或』
-用于选取一个字符域

分隔符

  • 对单个字符或表达式等进行分隔
符号意义
[]单字符分隔符 :对单字符进行分隔
()表达式分隔符 :对表达式进行分隔
{}限定符分隔符 :对限定符进行分隔

正则实例

  • 2到6位字母或数字组成的字符串
^[a-z,A-Z,0-9]|{2,6}$
2到6位字母或数字
  • 首字符为字母其余为字母或数字组成的6位及以上字符串
^[a-z,A-Z]{1}[a-z,A-Z,\d]|{5,}$
1位字母5位及以上字母或数字
  • 邮箱
^[A-Z,a-z,\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$
0位以上数字或字母0次以上(-_.+0位以上数字或字母)@0次以上(0次以上数字或字母 + -.)2到4位数字或字母

代码书写

/// 帐号
var acount = "339662012@qq.com"
/// 正则规则字符串
let pattern = "^[A-Z,a-z,\\d]+([-_.][A-Z,a-z,\\d]+)*@([A-Z,a-z,\\d]+[-.])+[A-Z,a-z,\\d]{2,4}"
/// 正则规则
let regex = try? NSRegularExpression(pattern: pattern, options: [])
/// 进行正则匹配
if let results = regex?.matches(in: acount, options: [], range: NSRange(location: 0, length: acount.count)), results.count != 0 {
    print("帐号匹配成功")
    for result in results{
        let string = (acount as NSString).substring(with: result.range)
        print("对应帐号:",string)
    }
}

原文链接
https://www.jianshu.com/p/a580bf0aece4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值