首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angularjs MMMM dd,yyyy ng-yyyy返回错误

Angularjs MMMM dd,yyyy ng-yyyy返回错误
EN

Stack Overflow用户
提问于 2016-07-06 17:53:20
回答 1查看 105关注 0票数 0

我有一个设置为日期作为值输入的字段,但是无论何时输入日期,AngularJs都会在字段上返回错误。

这个模式就是这样的

代码语言:javascript
运行
复制
ng-pattern='/^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?)\ 31)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?)\ (0?[1-9]|([12]\d)|30))|(Feb(ruary)?\ (0?[1-9]|1\d|2[0-8]|(29(?=,\ ((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))))\,\ ((1[6-9]|[2-9]\d)\d{2}))/'

我已经在regexr上测试了模式,并且它正在工作。我测试的日期是2016年6月30日的

EN

回答 1

Stack Overflow用户

发布于 2016-07-09 03:42:13

我仔细研究了您的regex (经过很好的考虑),最后根据您的概念重写了它。

我的结局是:

代码语言:javascript
运行
复制
((Jan(uary)?|Mar(ch)?|July?|Aug(ust)?|Oct(ober)?|Dec(ember)?) 31|(Jan(uary)?|Mar(ch)?|Apr(il)?|July?|June?|Aug(ust)?|Oct(ober)?|Sep|(Sept|Nov|Dec)(ember)?) (0?[1-9]|([12]\d)|30)|Feb(ruary)? (0?[1-9]|1\d|2[0-8]|29(?=, ((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00)))), (1[6-9]|[2-9]\d)\d{2}

下面是一个例子:https://regex101.com/r/gS0xB4/1

在这里,它被打破了一点:

代码语言:javascript
运行
复制
( // Begin get month and a day
    (Jan(uary)?|Mar(ch)?|July?|Aug(ust)?|Oct(ober)?|Dec(ember)?) 31 // Months with 31 days, and a 31
    | // OR
    (Jan(uary)?|Mar(ch)?|Apr(il)?|July?|June?|Aug(ust)?|Oct(ober)?|Sep|(Sept|Nov|Dec)(ember)?) // Every month but Feb, and...
    (0?[1-9]|([12]\d)|30) // A number from 1-30, optionally padded to 2 digits
    | // OR
    Feb(ruary)? // Feburary, and...
        (0?[1-9]|1\d|2[0-8] // A number from 1-28, optionally padded to 2 digits
        | // OR
        29(?=, ( // A 29, IF it is followed by a comma and...
            (1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26]) // A year which is a multiple of 4, but not a multiple of 100
            | // OR
            (16|[2468][048]|[3579][26])00) // A year which is a multiple of 400
        ) // End 29 conditional
    ) // End Feb
) // End month and day
, (1[6-9]|[2-9]\d)\d{2} // A comma, and a year between 1600 and 9999

我没有任何捕捉组来分割它,因为我只是想让它匹配--但是它们应该是相当容易加入的。我还删除了所有的逃逸,所以如果引擎需要的话,您可能必须将它们添加回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38230587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档