私はそれができるようにしたい何で来た日付を検証正規表現があります。MM/DD/YYYYまたはMMDDYYYY正規表現の検証
MM/DD/YYYY M/D/YYYY MM-DD- YYYY MdYYYY MM.DD.YYYY MdYYYY MMDDYYYY
およびその他のいくつかの変種。ここで
は私の表現です:
^((0[1-9]|1[012])[- /.]?(0[1-9]|[12][0-9]|3[01])[- /.]?(19|20)\d\d)|((((0?[13578])|(1[02]))[- /.]?((0?[1-9])|([12][0-9])|(3[01]))|((0?[469])|(11))[- /.]?((0?[1-9])|([12][0-9])|(30))|(0?[2])[- /.]?((0?[1-9])|([1][0-9])|([2][0-8])))[- /.]?(19\d{2}|20\d{2}))|(((0?[2]))[- /.]?((0?[1-9])|([12][0-9]))[- /.]?((19|20)(04|08|[2468][048]|[13579][26])|2000))$
私は正規表現がしたい私は大半が動作するように取得していますが、私は仕事にしたくない日付がMdYYYY、MMdYYYY、またはMddYYYY
です同じ理由で複数の場所で呼び出されているため、調整する必要があるコードの量が制限されているため、変更された唯一のものである必要があります。
私は私のカスタムTextBoxPlus.ascxにあるこのCaseステートメントからこの正規表現を呼んでいる:
:Case TextBoxPlusType.DateOnlyMMDDYYYY
WatermarkText = "mmddyyyy"
ValidationExpression = "^((0[1-9]|1[012])[- /.]?(0[1-9]|[12][0-9]|3[01])[- /.]?(19|20)\d\d)|((((0?[13578])|(1[02]))[- /.]?((0?[1-9])|([12][0-9])|(3[01]))|((0?[469])|(11))[- /.]?((0?[1-9])|([12][0-9])|(30))|(0?[2])[- /.]?((0?[1-9])|([1][0-9])|([2][0-8])))[- /.]?(19\d{2}|20\d{2}))|(((0?[2]))[- /.]?((0?[1-9])|([12][0-9]))[- /.]?((19|20)(04|08|[2468][048]|[13579][26])|2000))$"
ErrorMessage = "Please enter a valid date format<br><b>mm/dd/yyyy<br>mmddyyyy</b>"
これはTextBoxPlus(私のカスタムコントロール)を呼び出して、実際のaspx.vbページにありますあなたはいくつかの場所でそれを使用している場合、それが可能な形式で日付として文字列の妥当性を判断するための機能を使用するのが最善だろう
If (Not (Date.TryParseExact(IssueDate.Text, "MMddyyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None, New Date))) Then
If (Not (Date.TryParseExact(IssueDate.Text, "MM/dd/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None, New Date))) Then
showIfBadDate.Visible = True
BadDate_AM.Show()
Else
IssueDate_ = Date.ParseExact(IssueDate.Text, "MM/dd/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)
End If
Else
IssueDate_ = Date.ParseExact(IssueDate.Text, "MMddyyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)
End If
Yikes、私はそれぞれを別々の正規表現に分割して、すべての検証コードを独自のメソッド/関数のどこかに入れます。 – 4castle
その正規表現はばかげている。私がそれを維持しなければならないと、私はあなたを追跡し、頭の中であなたを蹴ります。標準化する方が良いです。あなたが望む* one *形式を選び、その形式へのユーザーの入力を操作します。バリデーションは唯一の懸念事項ではありません。これらの異なる日付形式を合理的な方法で提示することは、他のすべてのメンテナンスの悪夢となります。 –
面白い話、これは私がきれいにしようとしている古い正規表現です –