Regex RegularExpressionValidator

Извините, если на этот вопрос уже был дан ответ, но я не смог найти его здесь. Я знаю, что это возможно, но очень мало знаю о Regex. у меня есть ASP.NET проект, и я хотел бы проверить, если первые два символа значения начинаются с GY, BT, JEи, если это так, вызвать сбой проверки.

На данный момент внутри моего RegularExpressionValidator есть:

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

Любая помощь будет принята с благодарностью.

Спасибо Джон

4 ответа

Решение

Я не уверен, правильно ли я понимаю, но думаю, что ваше выражение будет:

/^(GY|BT|JE)/

Это будет соответствовать всем значениям, начинающимся с GY или BT или JE.

Если, с другой стороны, вы хотите разрешить все строки, которые не начинаются с BY, BT или JE, это будет

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

Помни что [] является диапазоном, и не делает никаких оговорок относительно порядка появления символов. Так:

[GY]{2} будет соответствовать не только желаемому "GY", но также "GG" или "YY". Попробуй это:

/^(GY|BT|JE)/

Простая задача - использовать регулярные выражения ^(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>

Это должно сделать свое дело

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);
Другие вопросы по тегам