护照号码的正则表达式
Regex for Passport Number
我正在尝试对护照号码实施正则表达式验证。
我的要求是
- 长度应最少 3 个字符,最多 20 个字符。
- 不应该只有0的
我尝试使用以下正则表达式
^(?!0{3,20})[a-zA-Z0-9]{3,20}$
这似乎适用于大多数情况,但如果我的文本包含 3 个或更多前导零,它似乎会失败。比如'00000001'.
示例匹配
- 101AE24 - 按预期工作
- 00 - 未按预期工作
- 01234 - 按预期工作
- 00001 - 不工作(但它也应该匹配)
如有任何帮助,我们将不胜感激。
这个呢?
^(?!^0+$)[a-zA-Z0-9]{3,20}$
而不是说 'reject values with 3-20 zeros',我们可以说“拒绝任何 仅 包含零的内容(无论长度如何,因为 <3 和 >20 无论如何都会失败)
在线学习正则表达式我花了大约 5 分钟 [iOS, Swift]。下面是我简单的回答,初学者可以理解。
对于 1 个字母和 7 个数字:
[A-Z]{1}[0-9]{7}
对于 2 个字母和 7 个数字:
[A-Z]{2}[0-9]{7}
--
func validatePassport(from value: String?) throws {
guard let passportNo = value, !passportNo.isEmpty else {
throw MyError.noPassport
}
let PASSPORT_REG_EX = "[A-Z]{1}[0-9]{7}"
let passport = NSPredicate(format:"SELF MATCHES %@", PASSPORT_REG_EX)
if !passport.evaluate(with: passportNo) {
throw MyError.invalidPassport
}
}
看到这个表情
^[A-Z0-9<]{9}[0-9]{1}[A-Z]{3}[0-9]{7}[A-Z]{1}[0-9]{7}[A-Z0-9<]{14}[0-9]{2}$
我正在尝试对护照号码实施正则表达式验证。
我的要求是
- 长度应最少 3 个字符,最多 20 个字符。
- 不应该只有0的
我尝试使用以下正则表达式
^(?!0{3,20})[a-zA-Z0-9]{3,20}$
这似乎适用于大多数情况,但如果我的文本包含 3 个或更多前导零,它似乎会失败。比如'00000001'.
示例匹配
- 101AE24 - 按预期工作
- 00 - 未按预期工作
- 01234 - 按预期工作
- 00001 - 不工作(但它也应该匹配)
如有任何帮助,我们将不胜感激。
这个呢?
^(?!^0+$)[a-zA-Z0-9]{3,20}$
而不是说 'reject values with 3-20 zeros',我们可以说“拒绝任何 仅 包含零的内容(无论长度如何,因为 <3 和 >20 无论如何都会失败)
在线学习正则表达式我花了大约 5 分钟 [iOS, Swift]。下面是我简单的回答,初学者可以理解。
对于 1 个字母和 7 个数字:
[A-Z]{1}[0-9]{7}
对于 2 个字母和 7 个数字:
[A-Z]{2}[0-9]{7}
--
func validatePassport(from value: String?) throws {
guard let passportNo = value, !passportNo.isEmpty else {
throw MyError.noPassport
}
let PASSPORT_REG_EX = "[A-Z]{1}[0-9]{7}"
let passport = NSPredicate(format:"SELF MATCHES %@", PASSPORT_REG_EX)
if !passport.evaluate(with: passportNo) {
throw MyError.invalidPassport
}
}
^[A-Z0-9<]{9}[0-9]{1}[A-Z]{3}[0-9]{7}[A-Z]{1}[0-9]{7}[A-Z0-9<]{14}[0-9]{2}$