我有“dd / MM / yyyy”的正则表达式,工作正常,
"^([0]?[1-9]|[1][0-2])[./-]([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0-9]{4}|[0-9]{2})$"
但我想修改它,所以它也接受00 / MM / 2014。 我的程序将此解释为特定月份的所有日期。例如00/04/2014 指4月份的所有日期。
有人可以告诉我,为了实现这一目标,我需要对上述脚本做出哪些改变?
以下是我在其中使用的代码:
<asp:TextBox ID="TextBox5" runat="server" MaxLength="1" CssClass="MainContent"
style="text-align:justify" ValidationGroup="MKE" Width="130px" />
<asp:ImageButton ID="ImgBntCalc" runat="server" CausesValidation="False"
ImageUrl="images\calendar-schedulehs.png" />
<asp:MaskedEditExtender ID="MaskedEditExtender2" runat="server"
AcceptNegative="Left" DisplayMoney="Left" ErrorTooltipEnabled="True"
mask="99/99/9999" MaskType="Date" MessageValidatorTip="true"
OnFocusCssClass="MaskedEditFocus" OnInvalidCssClass="MaskedEditError"
TargetControlID="TextBox5" />
<asp:MaskedEditValidator ID="MaskedEditValidator2" runat="server"
ControlExtender="MaskedEditExtender2" ControlToValidate="TextBox5"
Display="Dynamic" EmptyValueBlurredText="*" ValidationExpression="^(?:[012]?[0-9]|3[01])[./-](?:0?[1-9]|1[0-2])[./-](?:[0-9]{2}){1,2}$"
InvalidValueMessage="Date is invalid" ValidationGroup="MKE1" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" Format="dd/MM/yyyy"
PopupButtonID="ImgBntCalc" TargetControlID="TextBox5" />
答案 0 :(得分:3)
现在它是为MM/dd/yyyy
构建的(第一组只能包含0-12)。但是这里适用于dd/mm/yyyy
并允许00
或0
天:
"^([0]?[0-9]|[12][0-9]|[3][01])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$"
答案 1 :(得分:0)
您可能还想查看DateTime.ParseExact(格式描述为here),在大多数情况下,它是解析日期的更简单方法...
答案 2 :(得分:0)
我认为在这个表达中有太多的事情发生了。主观,可以肯定,但如果这是我的代码,我会做一个更宽松的正则表达式并在代码中进行验证。我发现六个月后回来更容易理解,而不是一个复杂的正则表达式。
有人说......
^(00|0?[1-9]|[12][0-9]|3[01])[./-]([0]?[1-9]|[12][0-9]|[3][01])[./-]([0-9]{4}|[0-9]{2})$
修改强>
作为解释,这是表达式的日期部分,注释:
^(
00 # match the literal string '00'
| 0?[1-9] # or, match 1-9, optionally prefixed with '0'
| [12][0-9] # or, match days 10-29
| 3[01] # or, match days 30 and 31
)
根据您的评论判断,听起来您在代码中实际使用正则表达式的方式存在问题。你可以在实际使用表达式的地方发布代码吗?
答案 3 :(得分:0)
怎么样:
日/月/年:
^(?:[012]?[0-9]|3[01])[./-](?:0?[1-9]|1[0-2])[./-](?:[0-9]{2}){1,2}$
毫米/日/年:
^(?:0?[1-9]|1[0-2])[./-](?:[012]?[0-9]|3[01])[./-](?:[0-9]{2}){1,2}$
答案 4 :(得分:0)
尝试这种模式
^([0]?[0-9]|[1][0-2])[.\/-]([0]?[1-9]|[1|2][0-9]|[3][0|1])[.\/-]([0-9]{4}|[0-9]{2})$
在ASPX中
<asp:TextBox ID="TextBox5" runat="server" MaxLength="1" CssClass="MainContent"
style="text-align:justify" ValidationGroup="MKE" Width="130px" />
<asp:ImageButton ID="ImgBntCalc" runat="server" CausesValidation="False"
ImageUrl="images\calendar-schedulehs.png" />
<asp:MaskedEditExtender ID="MaskedEditExtender2" runat="server"
AcceptNegative="Left" DisplayMoney="Left" ErrorTooltipEnabled="True"
mask="99/99/9999" MaskType="Date" MessageValidatorTip="true"
OnFocusCssClass="MaskedEditFocus" OnInvalidCssClass="MaskedEditError"
TargetControlID="TextBox5" />
<asp:MaskedEditValidator ID="MaskedEditValidator2" runat="server"
ControlExtender="MaskedEditExtender2" ControlToValidate="TextBox5"
Display="Dynamic" EmptyValueBlurredText="*" ValidationExpression="^([0]?[0-9]|[1][0-2])[.\/-]([0]?[1-9]|[1|2][0-9]|[3][0|1])[.\/-]([0-9]{4}|[0-9]{2})$"
InvalidValueMessage="Date is invalid" ValidationGroup="MKE1" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" Format="dd/MM/yyyy"
PopupButtonID="ImgBntCalc"
TargetControlID="TextBox5" />
检查此处DATE VALIDATION