【问题标题】:C# Regex to validate stringC#正则表达式验证字符串
【发布时间】:2014-03-07 09:02:44
【问题描述】:

我有以下正则表达式模式:

"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"

我想验证一个符合以下条件的字符串

  • 只允许字母数字字符
  • 长度只有 8 或 11
  • 前 6 个字符必须全部为大写字母

但是,上述模式不起作用。需要改变什么?

【问题讨论】:

  • 试试Regexhero.net它是测试你的表达的好工具。
  • 试试这个:(?:[a-zA-Z]{8,11}\d+)
  • 如果您想要更准确的答案。您应该粘贴一些示例。

标签: c# regex


【解决方案1】:

使用以下正则表达式:

^[A-Z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$

前 6 个字符必须全部为大写字母(^ 表示以下模式应在字符串的开头匹配):

^[A-Z]{6}

现在应该还有 2 或 5 个字母数字字符;无论如何应该有 2 个字母数字字符:

[A-Za-z0-9]{2}

之后的 3 是可选的(?:0 或 1 匹配前面的模式,$ 表示前面的模式应该匹配在字符串的末尾):

([A-Za-z0-9]{3})?$

同时使用^$ (^PATTERN$),模式应该匹配整个字符串而不是子字符串。

【讨论】:

  • 很好的详细解释。很有教育意义! :) 为了完整起见,您可以添加 ^ 意味着模式的一部分必须位于目标字符串的开头(锚定到它的开头),而 $ 将另一端锚定到字符串的末尾以同样的方式,所以这个模式必须代表整个目标字符串。
  • @Kjartan,感谢您的建议。我添加了关于^$的解释。
【解决方案2】:

表达式应该是:

^[A-Z]{6}([A-Za-z0-9]{2}|[A-Za-z0-9]{5})$

【讨论】:

    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多