【正規表現】日付の判別、チラ裏メモ。
最近正規表現使うことがあまり無かったのでメモφ(・・
検出したいパターン別にコピペ用
- yy/mm/dd のみを検出( 2022/03/04 など)
/^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/
- yy/m/d を許容する(2022/03/04 でも 2022/3/4 でもいい)
/^[0-9]{4}\/(0[1-9]|[1-9]|1[0-2])\/(0[1-9]|[1-9]|[12][0-9]|3[01])$/
- yy-mm-dd のみを検出( 2022-03-04 など)
/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/
- yy-m-d を許容する(2022-03-04 でも 2022-3-4 でもいい)
/^[0-9]{4}-(0[1-9]|[1-9]|1[0-2])-(0[1-9]|[1-9]|[12][0-9]|3[01])$/
実際の記述コピペ用
javascript
let date = "2022/02/16";
// javascriptでは正規表現をクォーテーションで囲まない
date.match(/^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/);
// または
const reg = /^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/;
date.match( reg );
// 戻り値はこんな感じ
// ['2022/02/16', '02', '16', index: 0, input: '2022/02/16', groups: undefined]
// 0: "2022/02/16"
// 1: "02"
// 2: "16"
// groups: undefined
// index: 0
// input: "2022/02/16"
// length: 3
// matchしない場合は null を返す
PHP
$date = "2022/02/16";
$reg = preg_match("/^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/",$date,$matches);
// $reg は true/false を返し、matchの内容は$matchesに書き込まれる
var_dump($matches);
/*
array(3) {
[0]=> string(10) "2022/02/16"
[1]=> string(2) "02"
[2]=> string(2) "16"
}
*/
// matchしない場合は $matchesは空配列を返す
ディスカッション
コメント一覧
まだ、コメントがありません