美文网首页
iOS 正则表达式

iOS 正则表达式

作者: liang1030 | 来源:发表于2019-08-13 14:16 被阅读0次

    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}$"
    

    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 正则表达式

          本文链接:https://www.haomeiwen.com/subject/odnvjctx.html