1

vbコードでasp.netを使用してWebアプリケーションに取り組んでいます。

正規表現バリデーターを使用している時間フィールドのテキストボックスがあります。

必要な形式は HH:MM am です。私が使用している正規表現は"(0[1-9]|[1][0-2])[:]" + "(0[0-9]|[1-5][0-9])[ ][A|a|P|p][M|m]"

時刻の例を入力しています: 午前 08:30 または午後 8:30 ですが、正規表現でエラー メッセージが表示されます。

誰でも正しい正規表現を手伝ってくれますか?

よろしくお願いします

シュバ

4

2 に答える 2

7

RegularExpressionValidator 以下の ValidationExpression を使用します。私はそれを使用しました。

ValidationExpression="^(1[0-2]|0[1-9]):[0-5][0-9]\040(AM|am|PM|pm)$"
于 2012-09-27T06:13:01.170 に答える
0

正規表現を使用する必要はありません。代わりにDateTime.TryParseorを使用してください。DateTime.TryParseExact通常のTryParse方法を使用することをお勧めします。これにより、訪問者のフォーマットに柔軟性がもたらされるからです (たとえば、24 時間制を使用したい訪問者もいれば、12 時間制を使用したい訪問者もいます)。

String input;
DateTime dt;
if( !DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt ) ) {
    // show error message
}

バリデーターを使用しているので、このロジックをサブクラスにラップする必要がありますValidatorが、それは非常に簡単です。

public class DateTimeValidator : BaseValidator {

    protected override bool EvaluateIsValid() {

        String controlValidationValue = base.GetControlValidationValue(base.ControlToValidate);
        if( String.IsNullOrEmpty( controlValidationValue ) ) return true;

        DateTime dt;
        return DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt );
    }
}

次に ( にタグ プレフィックスを登録したと仮定してweb.config) 行う必要があるのは次のとおりです。

<label>
    Enter a valid date/time value.
    <input type="text" runat="server" id="someDate" />
    <myprefix:DateTimeValidator runat="server" controlToValidate="someDate" />
</label>

<asp:RequiredFieldValidator>フィールドを必須にしたい場合は、別途必要になります。

于 2012-09-27T06:13:59.607 に答える