我可以使用什么样的正则表达式处理字符串
2.3.5...9
4...
...
到
2.3.5.0.0.9
4.0.0.0
0.0.0.0
我尝试了preg_replace('/\.([^0-9])/', '.0', $mystring)
,但没有运气,谢谢!
答案 0 :(得分:4)
您可以使用preg_replace('/^(?=\.)|(?<=\.)(?=\.|$)/', '0', $mystring)
这涵盖了情况
答案 1 :(得分:1)
您当前的方法已经接近,但要使其起作用,我们可以尝试使用环视。替换:
(?<=^|\.)(?=\.|$)
带有0
。
$mystring = "2.3.5...9";
$output = preg_replace('/(?<=^|\.)(?=\.|$)/', '0', $mystring);
echo $output;
以下是正则表达式逻辑的简要说明:
(?<=^|\.) position is preceded by either the start of the string, or another dot
(?=\.|$) position is followed by either the end of the string, or another dot
答案 2 :(得分:0)
如果输入字符串是IPv4(例如)字符串(ot不含数字),则执行以下操作:
echo preg_replace('~\B~', '0', '...'); // 0.0.0.0