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 を検証しようとしましたが、一致する文字列の最後の桁が欠落していました。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 を検証しようとしましたが、一致する文字列の最後の桁が欠落していました。javascript正規表現の検証
誰でも手助けできますか? おかげで、 チェン
使用この正規表現:^(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
(?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
)
$
大正規表現:
(?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
最初に括弧の一部を削除しました。
あなたの問題を解決するための1つの可能性は、あなたの文字列が日付のみである場合、これは解決策になるアンカー
^(0?[1-9]|1[0-2]){1}\/(0?[1-9]|1[0-9]|2[0-9]|3[0-1]){1}$
を使用することです。これらのアンカー^
と$
は、式が最初から最後まで一致するようにします。
は、第二の可能性があなたの最後の部分の順序を変更することですhere online on Regexr
それを参照してください。最初の部分0?[1-9]
が一致したため
(0?[1-9]|1[0-2]){1}\/(1[0-9]|2[0-9]|3[0-1]|0?[1-9]){1}
はあなた15
あなたの表現は成功し、それはそれでした。これを最後に置くと、最初に2桁の数字と一致するようにしようとすると、15
@muが短すぎるので、除外できます。私の答えを見てください。 –