0

你能帮我验证我的输入号码是否有效。

它可以是整数也可以是十进制数,但间隔为 0.5,因此 0.5、1.5、2.5 可以,但 .2、1.3、2.6 无效。

if ((preg_match('/^\d+\.\d+$/',$bkpoints))  || (preg_match('/^\.\d+$/',$bkpoints)))
{       {
    if ($bkpoints % 0.5 !== 0)
    {
          $this->form_validation->set_message('is_bk_decimal','Bk points decimal value should be incremented by 0.5');
          return false;
    }

 }
 return true;
4

3 回答 3

2

您可以使用一个正则表达式对其进行验证^\d+(?:\.[05]0*)?$

if(preg_match('#^\d+(?:\.[05]0*)?$#', $bkpoints)){
    echo 'valid';
}

解释:

  • ^: 行首
  • \d+: 匹配一个数字一次或多次
  • (?:: 非捕获组的开始
    • \.: 匹配一个点
    • [05]: 匹配05
    • 0: 匹配0零次或多次
  • ): 非捕获组结束
  • ?:使组可选
  • $: 行结束

online regex demo

于 2013-07-01T09:08:46.487 回答
0

尝试is_numeric()PHP 中的函数:http: //php.net/manual/en/function.is-numeric.php

如果数字是有效数字,它将返回 true,如果不是,则返回 false。

于 2013-07-01T08:37:46.990 回答
-1

或者您也可以使用以下ereg()功能:

if(ereg("^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$", "0.9")){
  echo "number";
}else{
  echo "not a number";
}
于 2013-07-01T08:45:28.020 回答