前後読み | 正規表現 |
---|---|
先読み | (?=…) |
戻り読み | (?<=…) |
$str1 = 'この商品の価格は \123です。'; $str2 = 'この商品の価格は \12345678です。'; $str3 = 'この商品の長さは 12345678.123mm です。';
正規表現
<?php // $str1 を適用 echo preg_replace('/(?<=\d)(?=(\d\d\d)+[^0-9.])/', ',', $str1); この商品の価格は \123です。 // $str2 を適用 echo preg_replace('/(?<=\d)(?=(\d\d\d)+[^0-9.])/', ',', $str2); この商品の価格は \12,345,678です。 // $str3 を適用 echo preg_replace('/(?<=\d)(?=(\d\d\d)+[^0-9.])/', ',', $str3); この商品の長さは 12345678.123mm です。 ?>
正規表現の解説
'/(?<=\d)(?=(\d\d\d)+[^0-9.])/', ',' ^^^^^ ^^^^^^^^^ ^^^^^^^ ^ ① ② ③ ④
① 戻り読み :②の条件の直前に必ず1つの数値がマッチする
② 先読み :3桁の数字の連続が1組以上ある場合にマッチする
③ 文字の否定 :②の条件の直後で、かつ、数値とリテラルの.(ドット)以外にマッチする
④ 挿入する文字:マッチした ``位置'' にカンマを挿入する