我该如何对它进行正则表达式?

时间:2018-11-29 09:47:55

标签: regex preg-replace

我可以使用什么样的正则表达式处理字符串

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),但没有运气,谢谢!

3 个答案:

答案 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

请参见live demo here