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(.)从头开始替换所有,那么您必须.在您的正则表达式中转义。因为简单地使用.将匹配任何字符。此外,您需要使用一些量词 -*+替换更多dots(.).

因此,您的正则表达式将是:

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

或者:

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

/^./匹配字符串开始后的第一个字符。

  • //分隔正则表达式。
  • ^匹配字符串开头的位置,
  • .匹配任何字符,除非它是换行符)。

该匹配项将被空字符串 ( '') 替换。

如果要替换前三个字符:

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

如果要替换字符串开头的所有点,则需要对它们进行转义并应用量词(+意思是“一个或多个”):

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

如果要替换字符串开头的所有非数字(这可能更有意义):

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