Codeigniter数字正则表达式包括点和逗号

时间:2015-01-18 21:41:27

标签: php regex codeigniter

我正在使用codeigniter框架。

我的验证规则

array(
    'field' => 'amount_per_unit'
    'label' => __('Cost'),
    'rules' => 'trim|numeric|required|greater_than[0]'
)

适用于包含点的数字。在我的国家,我们使用点(。)和逗号(,)。我想为dot和逗号更改codeigniter正则表达式。

这是codeigniter regex

return (bool)preg_match( '/^[\-+]?[0-9]*\.?[0-9]+$/', $str);

如果我输入带有点的数字,则返回true,但如果输入带有逗号的数字,则返回false,但它应返回true。

如何更改包含点和逗号的正则表达式?

1 个答案:

答案 0 :(得分:1)

您可以使用字符类来包含这两个字符。我按如下方式写这个:

return (bool) preg_match('/^[-+]?\d+(?:[,.]\d+)*$/', $str);

正则表达式:

^          # the beginning of the string
[-+]?      # any character of: '-', '+' (optional)
\d+        # digits (0-9) (1 or more times)
(?:        # group, but do not capture (0 or more times):
  [,.]     #   any character of: ',', '.'
  \d+      #   digits (0-9) (1 or more times)
)?         # end of grouping
$          # before an optional \n, and the end of the string