2016-07-05 6 views
0

Ich versuche, dieses AJAX ControlToolkit zu akzeptieren, entweder Standardzeit oder militärische Zeitformat, aber jedes militärische Zeit später als 1200 ist ungültig in dieser Version. Wenn ich Militärzeit betrete, bevorzuge ich 1200, 1305 usw. ohne entweder A/PM oder ":" Trennzeichen. Kannst du helfen? Vielen Dank.Regex, wie entweder Standardzeit oder militärische Zeit Format

<td class="data"> 
 
    <strong>Scheduled Time:</strong> 
 
    <br /> 
 
    <asp:TextBox ID="scheduled_time" runat="server" Enabled="False"></asp:TextBox> 
 
    <asp:Label ID="lblScheduled_time_tip" runat="server"> 
 
    <div style="font-size: 8pt">Tip: Type 'A' or 'P' to switch AM/PM</div> 
 
    </asp:Label> 
 
    <cc1:MaskedEditExtender ID="MaskedEditExtender3" runat="server" TargetControlID="scheduled_time" Mask="99:99" MessageValidatorTip="true" OnFocusCssClass="MaskedEditFocus" OnInvalidCssClass="MaskedEditError" MaskType="Time" AcceptAMPM="True" ErrorTooltipEnabled="True" 
 
    /> 
 
    <cc1:MaskedEditValidator ID="MaskedEditValidator3" runat="server" ControlExtender="MaskedEditExtender3" ControlToValidate="scheduled_time" IsValidEmpty="False" EmptyValueMessage="Time is required" InvalidValueMessage="Time is invalid" Display="Dynamic" 
 
    TooltipMessage="Input a time" EmptyValueBlurredText="*" ValidationExpression="^(([1-9]{1})|([0-1][1-2])|(0[1-9])|([1][0-2])):([0-5][0-9]).(([aA])|([pP]))[mM]$" InvalidValueBlurredMessage="Invalid time" ValidationGroup="MKE" /> 
 
</td>

+0

Wollen Sie damit sagen Sie eine Kontrolle wollen entweder Standard oder militärische Zeitformate zu akzeptieren, automatisch die entsprechende Maskierung und Validierung der Anwendung? Ich wäre sehr überrascht, wenn das möglich wäre. –

Antwort

0

^((?:0?[1-9]|1[0-2]):[0-5][0-9](?:[aA]|[pP])[mM]|[0-1][0-9][0-5][0-9]|2[0-3][0-5][0-9])$

ist ein regulärer Ausdruck, der, was ich denke, Sie fragen, passen auf:

(?:0?[1-9]|1[0-2]):[0-5][0-9](?:[aA]|[pP])[mM] Matches jede gültige Normalzeit. (1-12: 0-59 (am/pm))

(die 0? ermöglicht 13.23 oder 01.23)

oder

[0-1][0-9][0-5][0-9]|2[0-3][0-5][0-9] jeden gültigen zulu (0000-2359)

Die ^$ Anker sorgen dafür, dass es sonst nichts gibt.

Falls Sie sehen möchten/spielen mit dem, was es passt: regex101

+0

Danke. Es funktioniert nicht. Wenn das Formular das erste Mal geladen wird, hat das Feld __: __ AM-Standard. Ich gebe 23:00 ein, ich habe ungültige Zeit. Ich setze die Attribute auf <.. Mask = "9999" AcceptAMPM = "False" ..>, ich habe immer noch ungültige Zeit. – user266909

+0

'23: 00' ist ungültig ... wollten Sie, dass es so gemischte Zeit akzeptiert? Wenn Sie jetzt ein ':' verwenden wollen, müssen * Sie * – TemporalWolf

+0

mit der Maske 99:99 angeben, wenn 2300 eingegeben wird, wird 23:00 eingegeben. mit der Maske 9999 wird als 2300 eingetragen. Entweder ist ungültig. Ich verdünne es ist die Maske und das AcceptAMPM wirft es ab. – user266909