この正規表現について教えてください。
$price = "...555.55";
$price = preg_replace('/^./', '', $price);
出力:
$price = ..555.55;
この正規表現について教えてください。
$price = "...555.55";
$price = preg_replace('/^./', '', $price);
出力:
$price = ..555.55;
正規表現'/^./'
は、文字列の先頭にある任意の文字と一致します。
dot(.)
文字以外の任意の文字に一致しnewline
、caret(^)
最初に一致させるために使用されます。したがって、preg_replace
先頭の任意の文字を空の文字列に置き換えています。なので、最初の を置き換えた後に...555.55
なります。..555.55
.
最初からすべてを置き換えたい場合は、正規表現でdots(.)
エスケープする必要があります。.
単純に使用.
すると、どの文字にも一致するためです。また、量指定子を使用するか、 more を置き換える必要が*
あり+
ますdots(.)
。
したがって、正規表現は次のようになります。
preg_replace('/^[.]+/', '', $price);
また:
preg_replace('/^\.+/', '', $price);
/^./
文字列の開始後の最初の文字に一致します。
/
正規表現を/
区切ります。^
文字列の先頭の位置に一致し、.
改行でない限り、任意の文字に一致します)。その一致は空の文字列 ( ''
) に置き換えられます。
最初の 3 文字を置換する場合:
$price = preg_replace('/^.{3}/', '', $price);
文字列の先頭にあるすべてのドットを置き換えたい場合は、それらをエスケープして量指定子 ( +
「1 つ以上」を意味する)を適用する必要があります。
$price = preg_replace('/^\.+/', '', $price);
文字列の先頭にあるすべての非数字を置き換えたい場合 (より意味があるかもしれません):
$price = preg_replace('/^\D+/', '', $price);