2017-05-18 10 views
0

次の形式のUITextfieldがあります。それは、私たちが通常湾岸諸国で見ることができる民間の身分証明書です。だから私はSwiftの私のUITextfieldで同じことを検証する必要があります。入力文字列の検証はCivilIDですか?

市民IDフォーマット - NYYMMDDNNNNN誕生年のN桁、YY最後の2桁、MMの誕生月、DDの誕生日...

どのようにこのために検証を行うことを教えてください。

NSString *dateFromTextfield = @"07/24/2013"; 

    // Convert string to date object 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"MM/dd/yyyy"];// here set format which you want... 
    NSDate *date = [dateFormat dateFromString:dateFromTextfield]; 

しかし、どのように迅速に「NYYMMDDNNNNN」を必要と私のフォーマットのために同じことをすること:私は現在、Objective Cのコードを使用して、生年月日を確認しています。

+0

NSRegularExpressionがこのトリックを行うことができます。 – Larme

+0

@Larmeこれを行うには? –

答えて

0

まず、あなたのテキストフィールドの入力が数字のみで許可するので、12文字の制限を与える必要なあなたの場合12文字には、同様の制限を与える - ちょうどユーザーの日付かどうかを検証する。その後

func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
{ 
    let currentCharacterCount = textField.text?.characters.count 

    if (range.length + range.location > currentCharacterCount!){ 
      return false 
    } 
    let newLength = currentCharacterCount! + string.characters.count - range.length 

    let allowedCharacters = CharacterSet.decimalDigits 
    let characterSet = CharacterSet(charactersIn: string) 

    return newLength <= 12 && allowedCharacters.isSuperset(of: characterSet) 
} 

- 以下のコードであります出産と出産の入力された日付が正しいかそうでないのに以下のようなボタンアクションを提出 -

func submitBtnTapped() 
{ 
    //Let say your civicID is like below 
    let civicID = "113072489656" 

    var birthDate = String(civicID.characters.prefix(7)) 
    birthDate.remove(at: birthDate.startIndex) 

    let userBirthDate = "07/24/2013" 

    let formatter = DateFormatter() 
    formatter.dateFormat = "MM-dd-yyyy" 
    let date = formatter.date(from: userBirthDate) 
    print("\(String(describing: date))") 

    formatter.dateFormat = "yyMMdd" 
    let actualBirthDate = formatter.string(from: date!) 
    print(actualBirthDate) 

    if birthDate == actualBirthDate 
    { 
     print("true") 
    }else { 
     print(“false”) 
    } 
} 

が、それはあなたのために働くことを願っています。

+0

しかし、私は誕生日を比較したくないです。ちょうど私はcivicID "113072489656"が正しい形式であることを確認する必要があり、それはyyMMdd形式に従います。これを行う方法を教えてください –

関連する問題