使用正则表达式计算和返回匹配

时间:2013-05-07 10:25:09

标签: php regex preg-match

考虑以下值:

$format = ',0';        // Thousand separators ON, no decimal places 
$format = '0';         // Thousand separators OFF, no decimal places
$format = '0.000';     // Thousand separators OFF, 3 decimal places
$format = ',0.0';      // Thousand separators ON, 1 decimal place
  1. 首先要做的是查看$format是否以','为前缀。这告诉我启用了千位分隔符。
  2. 其次,我必须看到第一个之后有多少个零。例如,以下将是2个小数位'0.00'等。
  3. 我设法匹配表达式(这不是很难),但我想要做的是提取单个匹配,以便我知道是否有','找到,以及有多少个零等等...

    这是我到目前为止所做的:

    preg_match_all('/^\,?[0]?[\.]?([0])+?$/',$value['Field_Format'],$matches);
    

1 个答案:

答案 0 :(得分:1)

我会使用不同的正则表达式并将子结果放入命名组中:

if (preg_match(
    '/^
    (?P<thousands>,)? # Optional thousands separator
    0                 # Mandatory 0
    (?:               # Optional group:
     (?P<decimal>\.)  # Decimal separator
     (?P<digits>0+)   # followed by one or more zeroes
    )?                # (optional)
    $                 # End of string/x', 
    $subject, $regs)) {
    $thousands = $regs['thousands'];
    $decimal = $regs['decimal'];
    $digits = $regs['digits'];
}