ホームページ >ウェブフロントエンド >jsチュートリアル >JS は通常のルールを使用して生年月日を決定します
今回はJSで正規表現を使って生年月日を調べる方法についてお届けします。JSで正規表現を使って生年月日を調べる場合の注意点は何ですか?実際の事例を見てみましょう。
フォーム検証では、生年月日を検証するために正規表現がよく使用されます。この記事では、生年月日をいくつかの部分に分けて、生年月日認証を実装する完全なプロセスを段階的に紹介します。この記事の内容を理解すると、正規表現の作成に対する理解が深まり、自信が持てるようになると思います。
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 つの単位に結合するために使用され、d{2} は任意の ASCII 数値と 2 回一致することを意味します。 、d など。値は [0-9] で、{2} は前の項目と 2 回一致することを意味します。
上記の正規表現は 1900 年から 2099 年までの年に一致します。年の範囲を制限したい場合は、次のルールを追加します: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"));
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"));
2月は29日の閏年です
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"));上記の正規表現は String の match() メソッドを使用し、このメソッドの唯一のパラメーターは正規表現であり、一致を返します。結果の配列。配列の最初の要素は一致した文字列で、残りの要素は正規表現のかっこで囲まれた部分式です。形式 (:?...) が何度も表示されるこの方法は、項目が 1 つの単位にグループ化されるだけで、そのグループに一致する文字は記憶されないことを意味します。この方法は、年、月、日の項目を規則的に一致する順序で抽出し、後で比較するために使用されます。
根据上述分析与测试,我们不但实现了年月日的正则的一般判定,还实现了日期范围及2,4,6,9,11月等特殊月份天数的处理,测验结果达到了我们设定的目标。
根据上述讲解和分析,我们可以调整相应的限定规则,使其满足于特定场景下的项目需要。
延伸
根据 V2EX网友 xiangyuecn 的意见,上述checkBirth的逻辑代码太多,确实有点 low。现将上述代码更新如下:
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; }
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がJS は通常のルールを使用して生年月日を決定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。