匹配字符串中的3个最后一个数字与正则表达式

时间:2016-07-28 12:47:12

标签: php regex

问题:

尝试使用正则表达式突出显示字符串中的最后3个数字。

代码:

<?php
    show_source('regex.php');

    $string = "
        780155OVERF I000000
        TRANFER DOMESTIC
        000114
        STHLM SE AB
    ";
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Regex to match last 3 numbers</title>
        <meta charset="utf-8">
    </head>
    <body>
        <?php
            echo nl2br(str_replace('/\d{3}(?=[^\d]+$)/g', '<span style="background-color:red;">$1</span>', $string));
        ?>
    </body>
</html>

期望的结果:

数字114应该有红色背景颜色。

2 个答案:

答案 0 :(得分:2)

主要错误:str_replace无法使用正则表达式。使用preg_replace

$string = "
    780155OVERF I000000
    TRANFER DOMESTIC
    000114
    STHLM SE AB
";

// use `m` modifier as you have multiline string
// `g` modifier is not supported by preg_replace
echo preg_replace("/\d{3}(?=[^\d]+)$/m", '<span>$0</span>', $string);

答案 1 :(得分:1)

使用:

print nl2br(
        preg_replace('/\d{3}(?=[^\d]+$)/s', 
                     '<span style="background-color:red;">$0</span>', 
                     $string)
           );