我遇到了PHP正則表達式匹配問題。正則表達式不能正確評估在PHP中
我想解決的問題是我需要從字符串中獲取小數值。表達需要滿足以下所有(所有美元符號可選):
($)1234.56
($)1,234.56
($)1.00
($)10
($).49
($)1,234,567.32
($)1,234,567
網上找到了一些精彩的例子之後,我能夠Frankentstein這個表達式在一起:如果您使用此的preg_match
/(?:^|\s|\$)([1-9](?:\d*|(?:\d{0,2})(?:,\d{3})*)(?:\.\d*[0-9])?|0?\.\d*[0-9]|0)(?:\s|$)/
測試儀on solmetra,使用上述模式和測試字符串'每單價$ 19198.01 hey!'你會得到以下結果:
Array
(
[0] => $19198.01
[1] => 19198.01
)
這是偉大的 - 這正是我所需要的!
然而,當我在PHP 5.3.10運行下面的代碼,我得到空爲使用這種模式字符串匹配輸出:
代碼:
$pattern = '/(?:^|\s|\$)([1-9](?:\d*|(?:\d{0,2})(?:,\d{3})*)(?:\.\d*[0-9])?|0?\.\d*[0-9]|0)(?:\s|$)/';
$subject = 'per unit price $19198.01 hey!';
$matches = preg_match($pattern,$subject);
var_dump($matches[0]); //dumps "null"
我敢肯定,我」我做錯了什麼,但我看不到它。
任何幫助將不勝感激。
環境:
PHP 5.3.10
Apache 2.2.21
Windows 2008 Server
表示不是十進制值,而是格式化的貨幣字符串。 – Gordon