我正在使用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。
如何更改包含点和逗号的正则表达式?
答案 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