【问题标题】:aspx reg expression validator: first character followed by optional second charaspx reg 表达式验证器:第一个字符后跟可选的第二个字符
【发布时间】:2015-09-09 18:10:05
【问题描述】:

我需要为 .aspx 程序形成一个正则表达式 (reg ex),该程序验证一个字符后跟可选字符。

第一个字符更严格,不允许连字符或空格。

我有

^[A-Za-z0-9][A-Za-z0-9 -]{1,9}

有效,但必须至少有两个字符(限制为总共 9 个字符)。

.net 代码如下:

   controltovalidate="txt1" validationexpression="^[A-Za-z0-9][A-Za-z0-9 -]{1,9}"></ASP:REGULAREXPRESSIONVALIDATOR>

[自从提出这个问题后,我发现只需将 {1,9} 更改为 {0,9} 即可完成我的需要,但我保留这个问题可能对其他人有用,尤其是下面的答案]

我读到了

^[A-Za-z0-9]([A-Za-z0-9 -])?{1,9}

可能会起作用,因为我用括号将第一个字符分组并使用“?”作为可选的。

但是,在将此代码投入生产之前,我真的需要知道这是否是正确的语法。

此外,它无法通过在线 reg 表达式验证器。

有人知道这是否适用于 aspx reg 表达式验证器吗?

【问题讨论】:

    标签: asp.net .net regex validation character


    【解决方案1】:

    尝试以下操作:/^[A-Za-z0-9](?:[A-Za-z0-9 -]){1,8}$/

    工作演示@regex101

    编辑#1(解释)

    在您的模式^[A-Za-z0-9]([A-Za-z0-9 -])?{1,9} 中,贪婪量词又名{n,m} 前面是贪婪量词又名?,它们都不是可量化的 标记,因此在另一个量词标记之前有一个量词标记在语义上是不正确的。

    为了实现您的目标,您必须让您的第二个可接受字符范围仅允许 18 次出现:(?:[A-Za-z0-9 -]){1,8}

    【讨论】:

    • 在我的 aspx 版本中,上述方法不起作用,但我假设它在某处是有效的 reg ex,所以我标记为答案。事实证明,如果我在浏览器中打开并且下面评论中的表达式满足我的需要,我的 Visual Studio (VS2013) 版本将验证这一点。
    • "^[A-Za-z0-9][A-Za-z0-9 -]{0,9}"
    • @JosephDoggie:您能否提供使用正则表达式的 .NET 代码?
    • @JosephDoggie:只需从正则表达式中删除斜杠,您不需要那些在 asp.net (C#/VB) 中的斜杠。 ^[A-Za-z0-9](?:[A-Za-z0-9 -]){1,8}$
    • @JosephDoggie: ValidationExpression="^[A-Za-z0-9](?:[A-Za-z0-9 -]){1,8}$" 应该可以完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多