iOS 正则表达式

1,常用元字符

元字符 描述
^ 匹配输入字符串开始位置
$ 匹配输入字符串结束为止
. 匹配除换行以外的任意字符
|
, 分割
[] 包含,默认一个字符长度
[0-9] 匹配0~9的数字
[a-z] 匹配小写英文字母
[A-Z] 匹配大写英文字母
[a-zA-Z] 匹配英文字母
[a-zA-Z0-9] 匹配英文字母数字
[^] 不包含,默认一个字符长度
{n} 重复n次
{n,} 重复>= n次
{n,m} n<= 重复次数 <= m
* 重复次数 >= 0
+ 重复次数 >=1
? 重复次数0次或1次
\ 转义字符
\d 匹配数字
\w 匹配字母、数字或下划线
\s 匹配空白字符:空格、制表符、换页符等包含
\D 匹配非数字字符
\W 匹配所有与非字母、非数字、非下划线字符
\S 匹配非空白字符

2,常用正则表达式

1,手机号

//手机号以1开头的11位数字
let regex = "^1\\d{10}$"

2,身份证号码

//前14或17位为数字,最后一位为x或X
let regex = "^(\\d{14}|\\d{17})(\\d|[xX])$"

let regex = "^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$"

3,邮箱

let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"

4,IP验证

let regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])(\\.(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)){3}$"

5,密码验证

//由字母和数字组成的6-16位字符
let regex = "^[a-zA-Z0-9]{6,16}$"

//密码必须为8-20位,需包含至少1个大写字母、1个小写字母、1个数字和1个特殊字符,特殊字符支持!@#$%^&*
let regex = "^(?=.*\\d.*)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{8,20}$"

6,0到10的数字,最多两位小数

let regex = "^[0-9](\\.[0-9]{1,2}){0,1}$"

7,-10到10的数字,最多两位小数

let regex = "^[+-]?(([0-9](\\.[0-9]{1,2}){0,1})|(10(\\.[0]{1,2}){0,1}))$"

8,20到85的数字,最多两位小数

let regex = "^(([2-7][0-9]|8[0-4])(\\.[0-9]{1,2}){0,1})|(85(\\.[0]{1,2}){0,1})$"

9,0到180的数字,最多两位小数

let regex = "^(([0-9]{1,2}|(1[0-7][0-9]))(\\.[0-9]{1,2}){0,1})|(180(\\.[0]{1,2}){0,1})$"

10,-22到22的数字,最多两位小数

let regex = "^[+-]?((([0-9]|1[0-9]|2[0|1])(\\.[0-9]{1,2}){0,1})|(22(\\.[0]{1,2}){0,1}))$"

11,10~100,包括10,不包括100,最多两位小数

let regex = "^([1-9][0-9])(\\.[0-9]{1,2}){0,1}$"

12,-30到22的数字,最多两位小数

static func validateSE(number: String) -> Bool {
        //-21到21,最多两位小数,或者22|22.0|22.00
        let psRegex:String = "^([+-]?([0-9]|1[0-9]|2[0-1])(\\.[0-9]{1,2}){0,1})|(22(\\.[0]{1,2}){0,1})$"
        let psTest:NSPredicate = NSPredicate(format: "SELF MATCHES %@", psRegex)
        
        //-29到-22,最多两位小数,或者-30|-30.0|-30.00
        let psAddRegex:String = "^-((2[2-9])(\\.[0-9]{1,2}){0,1})|(-30(\\.[0]{1,2}){0,1})$"
        let psAddTest:NSPredicate = NSPredicate(format: "SELF MATCHES %@", psAddRegex)
        
        return psTest.evaluate(with:number) || psAddTest.evaluate(with:number)
}

3, 特别介绍

例:

//0到10的数字,最多两位小数
let regex = "^[0-9](\\.[0-9]{1,2}){0,1}$"

1,[0-9]:匹配0到9中的某一数字
2,(\.[0-9]{1,2}):匹配一到两位0到9数字
3,{0,1}:匹配包含0到1个小数点,比如可以匹配 2,2.0,2.01,2.26等,不能匹配2.0.0等
如果改为{0,2}则可以匹配包含0到2个小数点 比如2,2.0,2.01,2.0.0,2.26.26等

你可能感兴趣的:(iOS 正则表达式)