护照号码的正则表达式

Din*_*nny 2 c# regex regex-negation

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

我的要求是

  1. 长度应至少为3个字符,最多为20个字符.
  2. 不应该只是0的

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

^(?0 {3,20})[A-ZA-Z0-9] {3,20} $

这似乎适用于大多数情况,但是如果我的文本包含3个或更多前导零,它似乎失败了.如'00000001'.

示例匹配

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

任何帮助将非常感激.

Rob*_*Rob 6

那这个呢?

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

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