护照号码正则表达式

问题描述 投票:0回答:4

我正在尝试对护照号码实施正则表达式验证。

我的要求是

  1. 长度应最少 3 个字符,最多 20 个字符。
  2. 不应该只有0

我尝试使用下面的正则表达式

^(?!0{3,20})[a-zA-Z0-9]{3,20}$

这似乎适用于大多数情况,但如果我的文本包含 3 个或更多前导零,它似乎会失败。例如“00000001”。

比赛示例

  • 101AE24 - 按预期工作
  • 00 - 未按预期工作
  • 01234 - 按预期工作
  • 00001 - 不起作用(但它也应该匹配)

任何帮助将不胜感激。

c# regex regex-negation
4个回答
14
投票

这个怎么样?

^(?!^0+$)[a-zA-Z0-9]{3,20}$

我们可以说“拒绝任何包含 0 的内容”,而不是“拒绝包含 3-20 个零的值”(无论长度如何,因为 20 无论如何都会失败) <3 and >


2
投票

对于 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 } }



1
投票
这个链接

看到了这个表情 ^[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}$



0
投票
*r'^[a-zA-Z0-9]{3,20}$'*

使用此表达方式

此正则表达式旨在匹配以下字符串:

以指定字符(^ 和 $)开始和结束。
  • 仅包含字母数字字符(字母 A-Z、a-z 和数字 0-9)。
  • 长度在 3 到 20 个字符之间。
© www.soinside.com 2019 - 2024. All rights reserved.