日期正则表达式不适用于FireFox

时间:2014-10-31 11:52:33

标签: c# regex asp.net-mvc

^(0[1-9]|[12][0-9]|3[01])[-\/](0[1-9]|1[012])[-\/](19|20)\d\d$

在firefox 33.02中,10/10/2014有效,但10-10-2014无效。

但是在Chrome中,10/10/201410-10-2014都可以使用。

为什么?

编辑:

我发现这不是表达无效,但可能是MVC中的某些内容

型号:

[Required(ErrorMessage = "Field is required")]
[RegularExpression(@"^(0[1-9]|[12][0-9]|3[01])[-\/](0[1-9]|1[012])[-\/](19|20)\d\d$", ErrorMessage = "Date is incorrect")]
[DataType(DataType.Date)]
public DateTime BevBday { get; set; }

CSHTML:

@Html.TextBoxFor(model => model.BevBday)

使用它,在Firefox中它将显示为

  

字段BevBday必须是日期。

在Chrome中

它不会给出相同的错误。

2 个答案:

答案 0 :(得分:1)

适合我(在firefox的web控制台中测试)

var re = /^(0[1-9]|[12][0-9]|3[01])[-\/](0[1-9]|1[012])[-\/](19|20)\d\d$/;
// /^(0[1-9]|[12][0-9]|3[01])[-\/](0[1-9]|1[012])[-\/](19|20)\d\d$/

re.test('10/10/2014');
// true

re.test('10-10-2014');
// true

答案 1 :(得分:0)

将其更改为此,现在可以使用。

    [Required(ErrorMessage = "Field is required")]
    [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd.MM.yy}", ApplyFormatInEditMode = true)]
    public DateTime BevBday { get; set; }