2010-08-01 2 views
-1

Я хочу регулярное выражение для проверки даты вида «13/08/2010», как это сделать?Как создать валидатор для этого ASP.NET

+5

Вы пытались найти? –

+1

Используйте ваш google fu на «regex validate dd/MM/yyyy» Если это проверка подлинности UI, то обратите внимание, что если вы используете валидаторы vanilla asp.net, вам также понадобится добавить нечетный валидатор. – StuartLC

+0

да искал его, но какая-то проблема была там хорошо, я получил решение спасибо – NoviceToDotNet

ответ

3
<asp:TextBox runat="server" ID="txtDate" /> 
<asp:CustomValidator runat="server" ControlToValidate="txtDate" ErrorMessage="Error" OnServerValidate="customValidator_ServerValidate" /> 

protected void customValidator_ServerValidate(object sender, ServerValidateEventArgs e) 
{ 
    DateTime d; 
    e.IsValid = DateTime.TryParse(
      e.Value, 
      System.Globalization.CultureInfo.InvariantCulture, 
      "dd/MM/yyyy", 
      out d); 

    // or if you want to try all available formats, not only the specific one 
    e.IsValid = DateTime.TryParse(
      e.Value, 
      out d); 
} 

См. MSDN:

1

Регулярное выражение для dd/MM/yyyy. он также будет поддерживать високосный год ...

^(((0 [1-9] | [12] \ d | 3 [01])/(0 [13578] | 1 [02])/((19 | [2-9] \ d) \ d {2})) | ((0 [1-9] | [12] \ д | 30)/(0 [13456789] | 1 [012])/((19 | [2-9] \ d) \ d {2})) | ((0 [1-9] | 1 \ д | 2 [0-8])/02/((19 | [2-9] \ г) \ д {2})) | (29/02/((1 [6-9] | [2-9] \ г) (0 [48] | [2468] [048] | [13579] [ 26]) | ((16 | [2468] [048] | [3579] [26]) 00)))) $

Regular Expression Library

Или вы можете также использовать CompareValidator с Type="Date"

5

Использование регулярных выражений, вероятно, неправильно, что нужно сделать здесь. Что вы действительно хотите от ваших пользователей - действительная дата, не так ли? Но вы должны учитывать локализацию и тот факт, что даты представлены по-разному в разных культурах. Если кто-то из США использовал ваше приложение, они, вероятно, не могут понять, почему 01/23/2010 не является допустимой датой, когда это им.

Вместо этого вы должны использовать compare validator, устанавливая Operator property на 'DataTypeCheck'. Это позволяет пользователям вводить даты в любом формате, с которым они знакомы, и вы все еще можете подтвердить, что они являются датой. Пример:

<asp:CompareValidator id="DateCompareValidator" runat="server" 
    Type="Date" Operator="DataTypeCheck" ControlToValidate="TextboxDate" 
    ErrorMessage="Please enter a valid date."> 
</asp:CompareValidator> 
Смежные вопросы