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等