正则表达式 STO单号规则

前端之家收集整理的这篇文章主要介绍了正则表达式 STO单号规则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

STO APP项目 单号规则

其实单号规则很容易写的 开始我也不太了解正则表达式 我只是看了一下安卓代码 然后写了个OC版本的 一次成功

代码如下 就一个CodeMatches类

#import <Foundation/Foundation.h>

//单号规则
@interface CodeMatches : NSObject

+ (NSMutableArray *)startsWithFor12; //12位运单号 规则
+ (NSMutableArray *)startsWithFor13; //13位运单号 规则
+ (BOOL)matches:(NSString *)billcode;//传入运单号 进行规则对比 是否符合单号规则
+ (BOOL)matchesPackeg:(NSString *)pacCode;  //传入集包单号 进行规则对比 是否符合单号规则
+ (BOOL )startWith:(NSString *)start billcode:(NSString *)billcode; //进行对比

@end


#import "CodeMatches.h"

@implementation CodeMatches

+ (BOOL)matches:(NSString *)billcode{
    
    if(billcode == nil){
        return NO;
    }
    
    if (![[NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"\\d+"] evaluateWithObject:billcode] ) {
        return NO;
    }
    BOOL matches = NO;
    switch (billcode.length){
        case 12:{
            for(int i=0; i<[[CodeMatches startsWithFor12] count]; i++){
                if([CodeMatches startWith:[CodeMatches startsWithFor12][i] billcode:billcode]){
                    matches = YES;
                    break;
                }
            }
            break;
        }
            
        case 13:{
            for(int i=0; i<[[CodeMatches startsWithFor13] count]; i++){
                if([CodeMatches startWith:[CodeMatches startsWithFor13][i] billcode:billcode]){
                    matches = YES;
                    break;
                }
            }
            break;
        }
    }
    return matches;
    
}
+ (BOOL)matchesPackeg:(NSString *)pacCode{

    if(pacCode == nil){
        return NO;
    }
    if (![[NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"\\d+"] evaluateWithObject:pacCode] ) {
        return NO;
    }
    BOOL matches = NO;
    switch (pacCode.length){
        case 12:{
            if ([[pacCode substringToIndex:3] isEqualToString:@"900"]) {
                matches = YES;
            }
            break;
        }
            
    }
    return matches;
    
}

+ (NSMutableArray *)startsWithFor12{

    static NSMutableArray *array = nil;
    if (array == nil) {
        array = [NSMutableArray arrayWithObjects:@"268",@"368",@"468",@"568",@"768",@"868",@"968",@"40",@"588",@"688",@"888",@"11",@"22",@"41",@"42",@"43",@"44",@"45",@"46",@"47",@"48",@"49",nil];
    }
    return array;
}

+ (NSMutableArray *)startsWithFor13{
    
    static NSMutableArray *array = nil;
    if (array == nil) {
        array = [NSMutableArray arrayWithObjects:@"33",@"55",@"660",@"661",@"662",@"663",@"664",@"665",@"666",@"667",@"669",@"77",@"880",@"881",@"882",@"883",@"884",@"885",@"886",@"887",@"889",@"99",nil];
    }
    return array;
}

- (NSString *)matches{
    
    return @"\\d+";
}

+ (BOOL )startWith:(NSString *)start billcode:(NSString *)billcode{
    
    if (start.length == 2) {
        if([[billcode substringToIndex:2]isEqualToString:start]){
            return YES;
        }else{
            return NO;
        }
    }
    if (start.length == 3) {
        if([[billcode substringToIndex:3]isEqualToString:start]){
            return YES;
        }else{
            return NO;
        }
    }
    
    return YES;
}

@end

猜你在找的正则表达式相关文章