iOS關于判斷輸入的密碼是否合法,價格動態判斷合法性

nwx8 9年前發布 | 8K 次閱讀 Swift IOS

一:正則表達式再用

pragma 正則匹配手機號

  • (BOOL)checkTelNumber:(NSString ) telNumber { NSString pattern = @^ 1 +[ 3578 ]+\d{ 9 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:telNumber]; return isMatch; }

pragma 正則匹配用戶密碼 6 - 18 位數字和字母組合

  • (BOOL)checkPassword:(NSString ) password { NSString pattern = @^(?![ 0 - 9 ]+$)(?![a-zA-Z]+$)[a-zA-Z0- 9 ]{ 6 , 18 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:password]; return isMatch;

}

pragma 正則匹配用戶姓名, 20 位的中文或英文

  • (BOOL)checkUserName : (NSString ) userName { NSString pattern = @^[a-zA-Z一-龥]{ 1 , 20 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:userName]; return isMatch;

}

pragma 正則匹配用戶身份證號 15 或 18 位

  • (BOOL)checkUserIdCard: (NSString ) idCard { NSString pattern = @(^[ 0 - 9 ]{ 15 }$)|([ 0 - 9 ]{ 17 }([ 0 - 9 ]|X)$); NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:idCard]; return isMatch; }

pragma 正則匹員工號, 12 位的數字

  • (BOOL)checkEmployeeNumber : (NSString ) number { NSString pattern = @^[ 0 - 9 ]{ 12 };

    NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:number]; return isMatch;

}

pragma 正則匹配URL

  • (BOOL)checkURL : (NSString ) url { NSString pattern = @^[ 0 -9A-Za-z]{ 1 , 50 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:url]; return isMatch;

} 二 TextFiled的代理方法

//////// 特殊字符的限制輸入,價格金額的有效性判斷

define myDotNumbers @"0123456789.\n"

define myNumbers @"0123456789\n"

-(void) createTextFiled { textfield1 = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; textfield1.delegate = self; [self addSubview:textfield1_];

 textfield2_ = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
textfield2_.delegate = self;
[self addSubview:textfield2_];

 textfield3_ = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
textfield3_.delegate = self;
[self addSubview:textfield3_];

}

-(void)showMyMessage:(NSString*)aInfo {

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:aInfo delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
[alertView show];
[alertView release];

}

  • (BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string { NSCharacterSet *cs; if ([textField isEqual:textfield1_]) {

      cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet];
      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
      BOOL basicTest = [string isEqualToString:filtered];
      if (!basicTest) {
          [self showMyMessage:@"只能輸入數字"];
          return NO;
      }
    

    } else if ([textField isEqual:textfield2_]) {

      cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet];
      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
      BOOL basicTest = [string isEqualToString:filtered];
      if (!basicTest) {
          [self showMyMessage:@"只能輸入數字"];
          return NO;
      }
    

    } else if ([textField isEqual:textfield3_]) {

      NSUInteger nDotLoc = [textField.text rangeOfString:@"."].location;
      if (NSNotFound == nDotLoc && 0 != range.location) {
          cs = [[NSCharacterSet characterSetWithCharactersInString:myDotNumbers] invertedSet];
      }
      else {
          cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet];
      }
      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
      BOOL basicTest = [string isEqualToString:filtered];
      if (!basicTest) {
    
          [self showMyMessage:@"只能輸入數字和小數點"];
          return NO;
      }
      if (NSNotFound != nDotLoc && range.location > nDotLoc + 3) {
          [self showMyMessage:@"小數點后最多三位"];
          return NO;
      }
    

    } return YES; }

</pre>

 本文由用戶 nwx8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!