php-regex在十进制之前插入零

时间:2013-12-09 11:49:26

标签: php regex

小数:使用前导零(0.4),小于1的P值设置为没有前导零(P = .05)

<?php
    // Leading zero for decimals
    $match='
    .5
    p=.5
    a= 67
    687.689
    .90 the decimal digit is
    .56 ';
    if (preg_match('/([a-zA-Z\s]+)?(?<!p=)(?<!\d)(\.(\d{1,}))/',$match))
    {
        $replacement = '$1&nbsp;0$2';
        $replac = preg_replace('/([a-z A-Z\s]+)?(?<!p=)(?<!\d)(\.(\d{1,}))/', $replacement, $match);
        echo $replac;
    }
    else
        echo $match;
?>

输入:

.5
p=.5
a=.67
687.689
.90
the decimal digit is .56

输出:

0.5 p=.5 a= 0.67 687.689  0.90 the decimal digit is  0.56

输出正确,但如果我在p = .5附近的输入中插入空格,输出将如下所示:

 0.5 p =  0.5 a= 0.67 687.689  0.90 the decimal digit is  0.56

不应为p = .5

添加零

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

很简单,更改小数的计数如下:

/([^p]\s+[=]+\s+)(\.\d{1,})/

编辑: 现在很清楚你想要什么,这个新字符串接受这个输入:

a = .1 p = .5

并给你:

a = 0.1 p = .5

答案 1 :(得分:0)

我终于找到了我的问题的答案。它可能不是一个更好的,但它给出了预期的结果。

if (preg_match('/([a-zA-Z\s]+)?(?<!p\s=\s)(?<!p=\s)(?<!p\s=)(?<!p=)(?<!\d)(\.(\d{1,}))/', $match))
{
...
}

输入:

p = .5 a = .5

输出:

p = .5 a = 0.5