teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

^$を追加

2015/06/19 05:17

投稿

naga3
naga3

スコア1293

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  <?php
3
3
  $dates = array("2010-09-01", "2010.10.12", "2010-8-2", "2010-10-2", "2010-5-12");
4
4
  foreach ($dates as $date) {
5
- if (preg_match('/(\d{4})\D(\d{1,2})\D(\d{1,2})/', $date, $m)) {
5
+ if (preg_match('/^(\d{4})\D(\d{1,2})\D(\d{1,2})$/', $date, $m)) {
6
6
  echo sprintf('%4d/%02d/%02d', $m[1], $m[2], $m[3]) . '<br>';
7
7
  }
8
8
  }

1

test

2015/06/19 05:17

投稿

naga3
naga3

スコア1293

answer CHANGED
@@ -2,12 +2,12 @@
2
2
  <?php
3
3
  $dates = array("2010-09-01", "2010.10.12", "2010-8-2", "2010-10-2", "2010-5-12");
4
4
  foreach ($dates as $date) {
5
- if (preg_match('/(\d{4}).(\d{1,2}).(\d{1,2})/', $date, $m)) {
5
+ if (preg_match('/(\d{4})\D(\d{1,2})\D(\d{1,2})/', $date, $m)) {
6
6
  echo sprintf('%4d/%02d/%02d', $m[1], $m[2], $m[3]) . '<br>';
7
7
  }
8
8
  }
9
9
  ```
10
10
 
11
11
  正規表現で解いてみました。
12
- 数字4桁, 任意の1文字, 数字1または2桁, 任意の1文字, 数字1または2桁
12
+ 数字4桁, 数字以外の1文字, 数字1または2桁, 数字以外の1文字, 数字1または2桁
13
13
  にマッチします。