javascript正则表达式验证mm/dd

che*_*eng 3 javascript regex

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"]
Run Code Online (Sandbox Code Playgroud)

我试图验证日期格式mm/dd,但匹配的字符串错过了最后一位数字.

有人可以帮忙吗?谢谢,程

Kir*_*huk 5

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

如果你想在字符串中匹配,使用单词边界,例如:

\b(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])\b
Run Code Online (Sandbox Code Playgroud)
(?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
)
$
Run Code Online (Sandbox Code Playgroud)

大正则表达式:

(?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
Run Code Online (Sandbox Code Playgroud)