私はこの正規表現を試しました:
(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d
テキスト型の入力で、正常に機能しました。
<input type="Text" pattern="(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d" title="Must be DD.MM.YYYY (ex: 29.11.2012)" class="std_input_long" id="toDate">
ただし、正規表現オブジェクトを使用してJavaScriptで実行しようとすると、うまくいきません.これを理解できる人なら誰でも.
JavaScript:
var regex = new RegExp('(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d');
var startDate = "23.11.2012";
var endDate = "11.12.2012";
var bStartDate = regex.test(startDate);
alert(bStartDate);
if (bStartDate) {
var bendDate = regex.test(endDate);
alert(bendDate);
if (bendDate) {
alert('both correct')
} else {
alert('End date incorrect must be DD.MM.YYYY \n\n\
Example: 29.11.2012');
}
} else {
alert('Start date incorrect must be DD.MM.YYYY \n\n\
Example: 29.11.2012');
}
これは、実験するためのJSfiddleです。