I am new in swift and I need to validate International passport. Is there is any way to validate it.
Asked
Active
Viewed 3,483 times
-4
-
1you wrote regular expression and it is the same for all programming languages. If you want to know how use it in swift - read, for example, [here](https://www.hackingwithswift.com/articles/108/how-to-use-regular-expressions-in-swift) – Vadim Nikolaev Dec 20 '19 at 06:40
-
1Does this answer your question? [Regex for Passport Number](https://stackoverflow.com/questions/40647728/regex-for-passport-number) and [How to use regex in swift.](https://stackoverflow.com/questions/27880650/swift-extract-regex-matches) – dahiya_boy Dec 20 '19 at 07:08
2 Answers
1
try use NSPredicate:
func isValidPassport(passportStr:String) -> Bool {
let passportRegEx = "^(?!^0+$)[a-zA-Z0-9]{3,20}$"
let passportPred = NSPredicate(format:"SELF MATCHES %@", passportRegEx)
return passportPred.evaluate(with: passportStr)
}
Swift earlier than 3.0:
func isValidPassport(passportStr:String) -> Bool {
let passportRegEx = "^(?!^0+$)[a-zA-Z0-9]{3,20}$"
let passportPred = NSPredicate(format:"SELF MATCHES %@", passportRegEx)
return passportPred.evaluate(with: passportStr)
}
Swift earlier than 1.2:
class func isValidPassport(passportStr:String) -> Bool {
let passportRegEx = "^(?!^0+$)[a-zA-Z0-9]{3,20}$"
if let passportPred = NSPredicate(format:"SELF MATCHES %@", passportRegEx) {
return passportPred.evaluateWithObject(passportStr)
}
return false
}

Vasucd
- 357
- 2
- 10
0
It's very simple. You can check like below
extension String {
func isValidPassport() -> Bool {
let PASSPORT_REG_EX = "^(?!^0+$)[a-zA-Z0-9]{3,20}$"
let passport = NSPredicate(format:"SELF MATCHES %@", PASSPORT_REG_EX)
if (self.count >= 6) {
return passport.evaluate(with: self)
} else {
return false
}
}
}
Take a String Extension
and reuse rest of your App
let passport = "AS345501"
passport.isValidPassport()
Note: How to validate a passport?
UK passport numbers consist of 9 digits but used to consist of 6 digits and a letter.
Happy coding...

Sailendra
- 1,318
- 14
- 29