gpt4 book ai didi

c# - 正则表达式与 Asp.net Mvc StringLength 属性

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:26 25 4
gpt4 key购买 nike

我有 Asp.net mvc 应用程序,在提交表单上我使用 Regex 和 StringLength 属性来检查字符串。场景是我允许某种代码但它们的长度不同。我的类项目正则表达式和属性在这里:`

[StringLength(13,ErrorMessage="Allowed 13 or 12 Characters",MinimumLength=12)]      
[RegularExpression("^(01|04|05|06|pt|pT|Pt|PT|fg|fG|Fg|FG)[0-9]*(FR|fr|Fr|fR)?$", ErrorMessage = "Entered Format Is Incorrect")]
public string BarCode { get; set; }

问题是 FG,01,04,06 的长度是 12PT 编码长度必须为 13。 ussualy 用户使用 PT 代码 90%..有时他们会插入 12 长度的 PT 代码和它的错误。我可以同时拥有 2 个正则表达式吗?我可以验证正则表达式中特定代码的长度吗?我认为 [StringLength(13,ErrorMessage="Allowed 13 or 12 } atrribute is not what I need here..

最佳答案

你可以使用

^(?:(?:[Ff][gG]|0[146])(?=.{10}$)|(?:05|[pP][Tt])(?=.{11}$))[0-9]*(?:[Ff][rR])?$

参见 regex demo .

解释:

  • ^ - 字符串的开始
  • (?: - 非捕获交替组的开始
    • (?:[Ff][gG]|0[146]) - fg, Fg, fG FG 序列或 0 后跟 146
    • (?=.{10}$) - 正向前瞻,要求紧靠当前位置右侧的任意 10 个字符(使用 10 是因为 FG01 已经占用了 2 个字符,总共 12 个)
    • | - 或者
    • (?:05|[pP][Tt]) - 05, pt, Pt, pTPT
    • (?=.{11}$) - 正向前瞻,需要紧邻当前位置右侧的任意 11 个字符
  • ) - 交替组结束
  • [0-9]* - 0+ 位
  • (?:[Ff][rR])? - 可选序列(1 次或 0 次)、frFrfRFR
  • $ - 字符串结尾。

现在,添加KLM07489869FR格式支持(KLM是3个字符长,因此其余必须是10个,所以我们放置KLM匹配与 (?=.{10}$) 的替代部分:

^(?:(?:[Ff][gG]|0[146]|[Kk][Ll][Mm])(?=.{10}$)|(?:05|[pP][Tt])(?=.{11}$))[0-9]*(?:[Ff][rR])?$
^^^^^^^^^^^^

关于c# - 正则表达式与 Asp.net Mvc StringLength 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48622565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com