【发布时间】:2017-03-31 13:43:41
【问题描述】:
我正在尝试对护照号码实施正则表达式验证。
我的要求是
- 长度应最少为 3 个字符,最多为 20 个字符。
- 不应只有 0
我尝试了下面的正则表达式
^(?!0{3,20})[a-zA-Z0-9]{3,20}$
这似乎适用于大多数情况,但如果我的文本包含 3 个或更多前导零,它似乎会失败。如'00000001'。
示例匹配
- 101AE24 - 按预期工作
- 00 - 未按预期工作
- 01234 - 按预期工作
- 00001 - 不工作(但也应该匹配)
任何帮助将不胜感激。
【问题讨论】:
-
必须是正则表达式吗?您可以通过首先检查长度来解决此问题,然后确保您至少有以下
[A-Za-z1-9]中的一个或多个 -
对于长度 ^[0-9]{3,20}$ 然后检查 Convet.ToInt32(value) == 0
-
@viveknuna 字符串可以有字母字符。
-
然后使用 [a-zA-Z0-9] simple and int.TryParse
标签: c# regex regex-negation