【问题标题】:Regex RegularExpressionValidator正则表达式正则表达式验证器
【发布时间】:2012-06-29 12:07:53
【问题描述】:

对不起,如果这个问题已经得到解答,但我在这里找不到。我知道它可能,但对正则表达式的了解非常有限。我有一个ASP.NET 项目,我想检查一个值的前两个字符是否以GYBTJE 开头,如果是则触发验证失败。

我现在在我的 RegularExpressionValidator 中拥有的是:

/^(?i)[GY]{2}|^(?i)[BT]{2}|^(?i)[JE]{2}/

任何帮助将不胜感激。

谢谢 乔恩

【问题讨论】:

  • 我不明白你的正则表达式中的(?i),或者你的问题不清楚......

标签: asp.net regex reg-expressionvalidator


【解决方案1】:

我不确定我是否理解正确,但我猜你的表达方式是:

/^(GY|BT|JE)/

这将匹配所有以 GY 或 BT 或 JE 开头的值。

如果您希望允许所有不以 BY 或 BT 或 JE 开头的字符串,这将是

/^(?<!(GY|BT|JE)).*/

【讨论】:

    【解决方案2】:

    这应该可以解决问题

    string strRegex = @"/^(?i)[GY]{2}|^(?i)[BT]{2}|^(?i)[JE]{2}/";
    
    Regex re = new Regex(strRegex);
    if (re.IsMatch(inputString))
        return (true);
    else
        return (false);
    

    【讨论】:

    • 不明白您实际上需要正则表达式,而不是代码。对不起
    【解决方案3】:

    请记住[] 是一个范围,并且没有规定字符应该出现的顺序。所以:

    [GY]{2} 不仅匹配所需的“GY”,还匹配“GG”或“YY”。试试这个:

    /^(GY|BT|JE)/
    

    【讨论】:

      【解决方案4】:

      简单任务 - 使用正则表达式 ^(GY|BT|JE)^(?:GY|BT|JE)

      <script  runat="server">
        sub submit(sender As Object, e As EventArgs) 
          if Page.IsValid then 
            lbl.Text="OK"
          else 
            lbl.Text="NOT OK"
          end if
        end sub
      </script>
      
      <!DOCTYPE html>
      <html>
        <body>
          <form runat="server">Enter text here:
            <asp:TextBox id="txtbox1" runat="server" />
            <br /><br />
            <asp:Button text="Submit" OnClick="submit" runat="server" />
            <br /><br />
            <asp:Label id="lbl" runat="server" />
            <br />
            <asp:RegularExpressionValidator 
              ControlToValidate="txtbox1"
              ValidationExpression="^(GY|BT|JE)"
              EnableClientScript="false"
              ErrorMessage="Error"
              runat="server" />
          </form>
        </body>
      </html>
      

      【讨论】: