你能解释一下这个正则表达式吗?
$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(.)
从头开始替换所有,那么您必须.
在您的正则表达式中转义。因为简单地使用.
将匹配任何字符。此外,您需要使用一些量词 -*
或+
替换更多dots(.)
.
因此,您的正则表达式将是:
preg_replace('/^[.]+/', '', $price);
或者:
preg_replace('/^\.+/', '', $price);
/^./
匹配字符串开始后的第一个字符。
/
并/
分隔正则表达式。^
匹配字符串开头的位置,.
匹配任何字符,除非它是换行符)。该匹配项将被空字符串 ( ''
) 替换。
如果要替换前三个字符:
$price = preg_replace('/^.{3}/', '', $price);
如果要替换字符串开头的所有点,则需要对它们进行转义并应用量词(+
意思是“一个或多个”):
$price = preg_replace('/^\.+/', '', $price);
如果要替换字符串开头的所有非数字(这可能更有意义):
$price = preg_replace('/^\D+/', '', $price);