2011-10-26 53 views
1

這是我的嘗試,但它不起作用。現在我在正則表達式中很生鏽,所以我不知道它有什麼問題。任何幫助?

$pattern = '/-\$[.*]$/'; 
+0

用圓括號替換方括號。 –

回答

2

您需要將*置於[]之外(或者更好的方法是使用+)。

嘗試'/-\$[0-9\.]+/'

$pattern = '/-\$[0-9\.]+/'; 

或者,如果 - $ 7.50將始終是在該行的末尾:

$pattern = '/-\$[0-9\.]+$/'; 
+0

@Smamatti編輯刪除最後$。這是在問題中指定的嗎? – chown

+0

對不起。我只是認爲解決方案應該更通用。這是錯的嗎,因爲它沒有被指定這種方式嗎? – Smamatti

+0

@Smamatti沒有什麼不對,我只是以爲我會失明一秒:)。 – chown

1
$pattern = '/-\$(.*)$/'; 

如果我深知。在替換字符串中,數字將以「$ 1」的形式訪問。

1

嘗試用:

$pattern = '/-\$\d+\.\d+/'; 

它將匹配減符號(如果將其更改爲-?,則減號將爲可選項),點號後的數字,點號和數字。

1
<?php 
    $string = 'Wow! -$7.50 now!'; 
    $pattern = '/-\$(\d+)\.(\d+)/'; 

    $replacement = '-10%'; 
    echo preg_replace($pattern, $replacement, $string); 
?> 
+0

將減號放入表達式中。 – Smamatti