この正規表現について教えてください。
$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);