ホームページ > 記事 > ウェブフロントエンド > 生年月日の正規表現を実装するための JavaScript の手順
この記事では、生年月日をいくつかの部分に分けて、生年月日認証を実装する完全なプロセスを段階的に紹介します。生年月日の正規表現に興味がある友達は参考にしてみてください
フォーム検証では、生年月日を確認するために正規表現がよく使用されます。この記事では、生年月日をいくつかの部分に分けて、生年月日認証を実装する完全なプロセスを段階的に紹介します。この記事の内容を理解すると、正規表現の作成に対する理解が深まり、自信が持てるようになると思います。
2018-06-15 の形式の生年月日を年、月、日の 3 つの要素に分割し、それぞれに対応する規則的なルールを記述します。
まず、年の正規表現のルール定義を与えます:
年は4桁で構成されます
19と20で始まる年のみを受け入れます
上記のルールに従って、今年の正規表現を書くのは簡単です:
var pattern = /^(19|20)\d{2}$/; //输出 true console.log(pattern.test("2008"));
ここで// 2 つのスラッシュとその間の文字は正規表現リテラルの定義です。 ^ は文字列の先頭と一致することを意味し、$ は文字列の末尾と一致することを意味します。^(19|20) は 19 または 20 で始まる文字列と一致することを意味し、括弧のペアは複数の項目を 1 つの単位に結合することを意味します。 2} これは、任意の ASCII 数値を 2 回照合することを意味し、d は [0-9] に相当し、{2} は前の項目と 2 回照合することを意味します。
上記の正規表現は、1900 年から 2099 年までの年に一致します。年の範囲を制限したい場合は、次のルールを追加します:
年は 1920 年に始まります
年は 2018 年に終わります
上記のルールに従って、正規表現を次のように変更します:
var pattern = /^(19[2-9]\d{1})|(20((0[0-9])|(1[0-8])))$/; //输出 false console.log(pattern.test("1916")); //输出 true console.log(pattern.test("2008")); //输出 false console.log(pattern.test("2022"));
月 OK 月が 1-12
を追加できます。次の規則と簡単なテストが与えられます。
var pattern = /^((0?[1-9])|(1[0-2]))$/; //输出 false console.log(pattern.test("19")); //输出 true console.log(pattern.test("02")); //输出 true console.log(pattern.test("2")); //输出 true console.log(pattern.test("11"));
var pattern = /^((0?[1-9])|([1-2][0-9])|30|31)$/; //输出 false console.log(pattern.test("32")); //输出 true console.log(pattern.test("02")); //输出 true console.log(pattern.test("2"));
var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/; //输出 true console.log(pattern.test("1923-3-18")); //输出 true console.log(pattern.test("1923-4-31")); //输出 true console.log(pattern.test("1923-2-29")); //输出 true console.log(pattern.test("2016-2-29"));
2月は29日の閏年です
var checkBirth = function (val) { var pattern = /^((?:19[2-9]\d{1})|(?:20(?:(?:0[0-9])|(?:1[0-8]))))\-((?:0?[1-9])|(?:1[0-2]))\-((?:0?[1-9])|(?:[1-2][0-9])|30|31)$/; var result = val.match(pattern); if(result != null) { var iYear = parseInt(result[1]); var month = result[2]; var date = result[3]; if(/^((0?[469])|11)$/.test(month) && date == '31') { return false; } else if(parseInt(month) == 2){ if((iYear % 4 ==0 && iYear % 100 != 0) || (iYear % 400 == 0)) { if(date == '29') { return true; } } if(parseInt(date) > 28) { return false; } } return true; } return false; } //输出 true console.log(checkBirth("1923-3-18")); //输出 false 4月份没有31日 console.log(checkBirth("1923-4-31")); //输出 false 平年 console.log(checkBirth("1923-2-29")); //输出 true 闰年 console.log(checkBirth("2016-2-29"));上記の正規表現は String の match() メソッドを使用します。このメソッドの唯一のパラメータは正規表現です。返されるのは、一致する結果で構成される配列です。配列の最初の要素は一致した文字列で、残りの要素は正規表現のかっこで囲まれた部分式です。形式 (:?...) が何度も表示されるこの方法は、項目が 1 つの単位にグループ化されるだけで、そのグループに一致する文字は記憶されないことを意味します。この方法は、年、月、日の項目を規則的に一致する順序で抽出し、後で比較するために使用されます。
上記の分析とテストに基づいて、年、月、日の通常の一般的な決定を実現するだけでなく、日付範囲や2、4、6、9、11月などの特別な月の日の処理も実現しました。 . テストの結果は、設定した目標レベルに達しました。
上記の説明と分析に基づいて、特定のシナリオでのプロジェクトのニーズを満たすために、対応する制限ルールを調整できます。
var checkBirth = function (val) {
var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/;
if(pattern.test(val)) {
var date = new Date(val);
var month = val.substring(val.indexOf("-")+1,val.lastIndexOf("-"));
return date && (date.getMonth()+1 == parseInt(month));
}
return false;
}
Ajaxグローバルローディングボックスの設定(ローディングエフェクト)
以上が生年月日の正規表現を実装するための JavaScript の手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。