首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript正则表达式验证mm/dd

javascript正则表达式验证mm/dd
EN

Stack Overflow用户
提问于 2011-07-24 02:23:25
回答 2查看 4.1K关注 0票数 4
代码语言:javascript
复制
s="12/15"
r=/((0?[1-9])|(1[0-2])){1}\/((0?[1-9])|(1[0-9])|(2[0-9])|(3[0-1])){1}/g
s.match(r)

> ["12/1"]

我试图验证日期格式mm/dd,但匹配的字符串缺少最后一个数字。

有人能帮上忙吗?谢谢,程

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-24 02:26:24

使用这个正则表达式:^(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])$

如果想要字符串中的匹配项,请使用单词边界,例如:

代码语言:javascript
复制
\b(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])\b

代码语言:javascript
复制
(?x)
^
(
    0?[1-9]   # 1-9 or 01-09
    |
    1[0-2]    # 10 11 12
)
/
(
    0?[1-9]   # 1-9 or 01-09
    |
    [12][0-9] # 10-29
    |
    3[01]     # 30 31
)
$

大型正则表达式:

代码语言:javascript
复制
(?x)
\b(?:
(?<month>
    0?[13578]
    |
    1[02]
)
/
(?<day>
    0?[1-9]
    |
    [12][0-9]
    |
    3[01]
)
|
(?<month>
    0?[469]
    |
    11
)
/
(?<day>
    0?[1-9]
    |
    [12][0-9]
    |
    30
)
|
(?<month>
    0?2
)
/
(?<day>
    0?[1-9]
    |
    [12][0-9]
)
)
\b
票数 6
EN

Stack Overflow用户

发布于 2011-07-24 02:34:50

一开始我取下了你的一些支架。

解决问题的一种方法是使用锚点。

代码语言:javascript
复制
 ^(0?[1-9]|1[0-2]){1}\/(0?[1-9]|1[0-9]|2[0-9]|3[0-1]){1}$

如果您的字符串只是日期,这将是解决方案。这些锚点^$确保表达式从头到尾都匹配。

查看here online on Regexr

第二种可能是改变最后一部分的顺序。

代码语言:javascript
复制
(0?[1-9]|1[0-2]){1}\/(1[0-9]|2[0-9]|3[0-1]|0?[1-9]){1}

因为第一部分0?[1-9]与您的15匹配,所以表达式成功了,仅此而已。如果我们把它放到最后,首先它尝试匹配由两位数组成的数字,然后它匹配15

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

https://stackoverflow.com/questions/6802379

复制
相关文章

相似问题

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