この記事では、生年月日をいくつかの部分に分けて、生年月日認証を実装する完全なプロセスを段階的に紹介します。生年月日の正規表現に興味がある友達は参考にしてみてください
要するに
フォーム検証では、生年月日を確認するために正規表現がよく使用されます。この記事では、生年月日をいくつかの部分に分けて、生年月日認証を実装する完全なプロセスを段階的に紹介します。この記事の内容を理解すると、正規表現の作成に対する理解が深まり、自信が持てるようになると思います。
2018-06-15 の形式の生年月日を年、月、日の 3 つの要素に分割し、それぞれに対応する規則的なルールを記述します。
1年の正規
まず、年の正規表現のルール定義を与えます:
年は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
- の場合、前に 0
-
を追加できます。次の規則と簡単なテストが与えられます。
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"));
日付は 1 ~ 31 です
日付が 1 ~ 9 の場合、前に0を追加できます- 上記のルールに従って、次の正規表現と簡単なテストを考えてください:
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 月の日数が原因で、上記の定期的な検証が完璧ではないことがわかります。 、4月、6月、9月、11月。
5 改善点
ステップ 4 の質問に従って、次のような制限ルールを追加します: 4 月、6 月、9 月、11 月には 31 日はありません
2 月は 28 日あります平年です-
- 平年における閏年の判定:
- 4で割り切れる年は閏年、4で割り切れない年は閏年です4は平年です。しかし、丸 100 年の場合、400 で割り切れる場合のみうるう年となり、それ以外の場合は通常の年となります。 新しいルールと指示に基づいて、次の通常の関数とテストが提供されます:
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 サイトの他の関連記事を参照してください。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

ホットトピック









