2011-01-04 3 views
0

Мне нужно регулярное выражение, которое исключает только числа, делящиеся на 1,5. Я понятия не имею, возможно ли это?ASP.NET - Регулятор регулярного выражения

Я проверил библиотеку регулярных выражений, и у них ничего нет. У кого-нибудь есть идеи?

ответ

3

Как уже говорили другие, Regex не является правильным инструментом, и это лучше использовать CustomValidator как следующее:

<asp:CustomValidator ID="DivisibleByOnePointFiveValidator" runat="server" ErrorMessage="Must be divisible by 1.5!" 
    Display="Dynamic" ControlToValidate="MyTextBox" EnableClientScript="false" 
    OnServerValidate="DivisibleByOnePointFiveValidator_ServerValidate" > 
</asp:CustomValidator> 

    protected void DivisibleByOnePointFiveValidator_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
     decimal inputValue; 
     if (!decimal.TryParse(args.Value, out inputValue)) 
     { 
      args.IsValid = false; 
      return; 
     } 

     args.IsValid = inputValue % 1.5M == 0; 
    } 
2

Регулярные выражения предназначены для проверки строки, а не для числовой проверки (кроме определения того, что-то является или не является числовым). Для этого вам понадобится специальный валидатор.

+0

Расширять .. РЗ необходимо проверить ли вход число, а другой шаг должен проверьте, делится ли он на 1,5, так что это будет двухэтапный процесс. – DerekH

+0

@DerekH: было бы неплохо обновить ваш вопрос, чтобы сказать, что вы хотите подтвердить, что ввод представляет собой числовую строку в определенных разрешенных форматах (с десятичными знаками/выводами, ведущими нулями, научной записью и т. Д.). – FrustratedWithFormsDesigner

+0

На самом деле не мой вопрос, распространялся на ответ Кейта. Который я должен был указать! – DerekH

1

Неправильно использовать регулярные выражения для проверки числовых значений. Лучше написать небольшую функцию валидатора только для этой цели.

С этим регулярным выражением вы можете легко проверить числовое/нечисловое число: [0-9]+ Конечно, это позволит использовать многие ведущие нули и не принимать во внимание десятичные значения. Вы можете получить более сложные, такие как [0-9]+(\.(0|[0-9]+))? Я думаю, что это сделало бы десятичную факультативную. И мы даже не начали отрицательных знаков, научной нотации и других форматов нотации. Если вы укажете допустимый формат ввода, мы сможем легко справиться с регулярным выражением.

Смежные вопросы