你能解释这个正则表达式。
$price = "...555.55";
$price = preg_replace('/^./', '', $price);
输出:
$price = ..555.55;
答案 0 :(得分:3)
正则表达式'/^./'
匹配字符串开头的任何字符。
dot(.)
匹配除newline
字符和caret(^)
用于在开头匹配。因此,您的preg_replace
正在用空字符串替换开头的任何字符。
因此,在替换第一个...555.55
后,..555.55
变为.
。
如果您只想从头开始替换所有dots(.)
,那么您必须在正则表达式中转义.
。因为简单地使用.
将匹配任何字符。此外,您需要使用一些量词 - *
或+
来替换更多dots(.)
。
所以,你的正则表达式是:
preg_replace('/^[.]+/', '', $price);
或:
preg_replace('/^\.+/', '', $price);
答案 1 :(得分:1)
/^./
匹配字符串开头后的第一个字符。
/
和/
分隔正则表达式。^
匹配字符串开头的位置.
匹配任何字符,除非它是一个换行符)。 该匹配将被空字符串(''
)替换。
如果要替换前三个字符:
$price = preg_replace('/^.{3}/', '', $price);
如果要替换字符串开头的所有点,则需要转义它们并应用量词(+
表示“一个或多个”):
$price = preg_replace('/^\.+/', '', $price);
如果你想替换字符串开头的所有非数字(这可能更有意义):
$price = preg_replace('/^\D+/', '', $price);