0

この正規表現について教えてください。

$price = "...555.55";
$price  = preg_replace('/^./', '', $price);

出力:

 $price = ..555.55;
4

2 に答える 2

3

正規表現'/^./'は、文字列の先頭にある任意の文字と一致します。

  • dot(.)文字以外の任意の文字に一致しnewline
  • caret(^)最初に一致させるために使用されます。

したがって、preg_replace先頭の任意の文字を空の文字列に置き換えています。なので、最初の を置き換えた後に...555.55なります。..555.55.

最初からすべてを置き換えたい場合は、正規表現でdots(.)エスケープする必要があります。.単純に使用.すると、どの文字にも一致するためです。また、量指定子を使用するか、 more を置き換える必要が*あり+ますdots(.)

したがって、正規表現は次のようになります。

preg_replace('/^[.]+/', '', $price);

また:

preg_replace('/^\.+/', '', $price);
于 2013-02-08T07:50:27.010 に答える
1

/^./文字列の開始後の最初の文字に一致します。

  • /正規表現を/区切ります。
  • ^文字列の先頭の位置に一致し、
  • .改行でない限り、任意の文字に一致します)。

その一致は空の文字列 ( '') に置き換えられます。

最初の 3 文字を置換する場合:

$price = preg_replace('/^.{3}/', '', $price);

文字列の先頭にあるすべてのドットを置き換えたい場合は、それらをエスケープして量指定子 ( +「1 つ以上」を意味する)を適用する必要があります。

$price = preg_replace('/^\.+/', '', $price);

文字列の先頭にあるすべての非数字を置き換えたい場合 (より意味があるかもしれません):

$price = preg_replace('/^\D+/', '', $price);
于 2013-02-08T07:49:51.220 に答える