値が与えられたら、それを検証して、それが有効な年であるかどうかを確認したいと思います。私の基準は単純で、値は4
文字を含む整数でなければなりません。私はこれが最善の解決策ではないことを知っています。何年も前1000
には許可されず、などの年も許可されるから5000
です。この基準は、私の現在のシナリオには適切です。
私が思いついたのは
\d{4}$
これは機能しますが、負の値も許可されます。
正の整数のみが許可されるようにするにはどうすればよいですか?
値が与えられたら、それを検証して、それが有効な年であるかどうかを確認したいと思います。私の基準は単純で、値は4
文字を含む整数でなければなりません。私はこれが最善の解決策ではないことを知っています。何年も前1000
には許可されず、などの年も許可されるから5000
です。この基準は、私の現在のシナリオには適切です。
私が思いついたのは
\d{4}$
これは機能しますが、負の値も許可されます。
正の整数のみが許可されるようにするにはどうすればよいですか?
回答:
次のように開始アンカーを追加する必要があります^
。
^\d{4}$
正規表現\d{4}$
は、4桁で終わる文字列と一致します。そのため、のような入力-1234
が受け入れられます。
開始アンカーを追加することにより、 、4桁で開始および終了ます。つまり、事実上、4桁のみを含める必要があります。
whateverblahblah2323
。今、私は少しの学習が危険である理由を理解しました:O
10000
ことはバグになります。
1000年から2999年
^[12][0-9]{3}$
1900〜 2099年
^(19|20)\d{2}$
^(?:19|20)\d{2}$
(19|20)\d{2}
生年月日形式を検証するために正規表現に追加するにはどうすればよいですか?これは私の正規表現/^[0-9]{1,2}\/(0[1-9])|(1[0-2])\/[0-9]{4}$/
です。年が常に4桁で、19 **または20 **で始まることを確認したい
この質問に対する「受け入れられた」答えは正しくなく、近視眼的です。
0001
有効な年ではないのような文字列と一致するという点で正しくありません。
それはすることが近視であるではない9999てきた上記のいずれかの値に一致するが、我々はすでにの教訓忘れY2Kを?代わりに、正規表現を使用してください。
^[1-9]\d{3,}$
将来の年に加えて、過去の年を照合する必要がある場合は、この正規表現を使用して任意の正の整数を照合できます。
^[1-9]\d*$
過去の日付を予期していなくても、誰かがタイムマシンを発明してソフトウェアを持ち帰りたい場合に備えて、とにかくこの正規表現を使用することをお勧めします。
注:この正規表現は、通常、負の整数ではなくBC指定で表されるため、1年より前の年を含むすべての年に一致します。もちろん、この規則は今後数千年にわたって変更される可能性があるため、正または負の整数を次の正規表現と一致させるのが最善のオプションです。
^-?[1-9]\d*$
これは1900年から2099年まで機能します。
/(?:(?:19|20)[0-9]{2})/
@ r92の回答に基づいて、1970年から2019年まで:
(19[789]\d|20[01]\d)
197999
19[789]\d\d\d
許可される197999
/(19[789]\d|20[01]\d)/.test(1970324) >> true
1970
最後の3つではなく、最初の4つの数字()に一致し(19[789]\d|20[01]\d)[^0-9]
ます。それは一致します1970 324
が、一致しません1970324
使用する;
^(19|[2-9][0-9])\d{2}$
1900年から9999年の間。
9999以降は心配する必要はありません-AIはそれまでにすべてのプログラミングを行うでしょう!!! Hehehehe
https://regex101.com/で正規表現をテストできます
非キャプチャグループ(上記のコメントの1つに記載)の詳細については、こちらhttp://www.manifold.net/doc/radian/why_do_non-capture_groups_exist_.htm
YYYYまたはYYYYMMDDを一致させる必要がある場合は、次を使用できます。
^((?:(?:(?:(?:(?:[1-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:[2468][048]|[13579][26])00))(?:0?2(?:29)))|(?:(?:[1-9]\d{3})(?:(?:(?:0?[13578]|1[02])(?:31))|(?:(?:0?[13-9]|1[0-2])(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8])))))|(?:19|20)\d{2})$
こちらもご利用いただけます。
([0-2][0-9]|3[0-1])\/([0-1][0-2])\/(19[789]\d|20[01]\d)
00/00/2000
か31/02/1999
、さらに多くの誤った日付に一致します。
(0[1-9]|1[0-2])
月のより良い表現がある