c# - 护照号码的正则表达式

标签 c# regex regex-negation

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

我的要求是

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

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

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

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

示例匹配

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

如有任何帮助,我们将不胜感激。

最佳答案

这个呢?

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

与其说“拒绝包含 3-20 个零的值”,不如说“拒绝任何包含零的值(无论长度如何,因为 <3 和 >20 无论如何都会失败)

关于c# - 护照号码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40647728/

相关文章:

regex - 嗨,我正在尝试为 sed 命令找出以下正则表达式

c# - 如何在 C# 中创建一个按给定顺序返回下一个字符串的函数

c# - 聚合源 : How to access content:encoded?

c# - 用反射覆盖私有(private)方法

regex - 仅在 PostgreSQL 中显示不同的正则表达式匹配

php - 设置php文件以允许跨域调用

ruby - 使用 Ruby 1.8.7,当字符串未与特定文本绑定(bind)时,是否进行正则表达式替换?

正则表达式查找带引号、分号和等于的值

regex - 是否存在多重 REGEXEXTRACT 之类的东西?

c# - 使用 C# 开发一个充当 Web 程序的程序