2016-07-28 17 views
0

問題で、文字列に3つの最後の数字をマッチング:正規表現

は、正規表現を使用して文字列の最後の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は、赤の背景色を有していなければなりません。

+0

そして今何を示しますか? –

+2

'str_replace'はREGEXで' preg_replace'を使用しません – JustOnUnderMillions

+0

これはうまくいくhttps://www.regex101.com/r/yR4uX6/1 –

答えて

1

用途:

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

メインエラー:str_replaceはregexesで動作しません。 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);