Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2验证百分比的规则,如65.45_Php_Regex_Yii2_Preg Match_Rules - Fatal编程技术网

Php Yii2验证百分比的规则,如65.45

Php Yii2验证百分比的规则,如65.45,php,regex,yii2,preg-match,rules,Php,Regex,Yii2,Preg Match,Rules,我知道这是一个非常简单且重复的问题,但我几乎尝试了所有方法,但没有得到任何解决方案。 我想验证一个学生喜欢的百分比。例:65.45。。 用户必须输入这样的值,否则会显示错误。 我在模型中给出了以下规则。但它只接受整数值。未验证百分比 [['c_percentage'], 'number', 'numberPattern' => '/^\s*[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?\s*$/'], 请帮忙解决这个问题。提前感谢。试试这个,它会生效的

我知道这是一个非常简单且重复的问题,但我几乎尝试了所有方法,但没有得到任何解决方案。 我想验证一个学生喜欢的百分比。例:65.45。。 用户必须输入这样的值,否则会显示错误。 我在模型中给出了以下规则。但它只接受整数值。未验证百分比

[['c_percentage'], 'number', 'numberPattern' => '/^\s*[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?\s*$/'],

请帮忙解决这个问题。提前感谢。

试试这个,它会生效的

[['c_percentage'], 'number', 'numberPattern' => '/^[0-9]{1,2}(\.([0-9]{0,2})){0,1}$/'],
这将完成以下工作:

/^\s*[+-]?\d+(?:[.,]\d{1,2})?\s*$/
说明:

/               : regex delimiter
  ^             : begining of string
    \s*         : 0 or more spaces
    [+-]?       : optional plus or minus
    \d+         : 1 or more digits
    (?:         : start non capture group
      [.,]      : dot or comma
      \d{1,2}   : 1 or 2 digits (decimal part)
    )?          : the group is optional to allow whole integer
    \s*         : 0 or more spaces
  $             : end of string
/               : regex delimiter
如果只想匹配浮点值,请删除可选部分:

/^\s*[+-]?\d+[.,]\d{1,2}\s*$/
或者,如果您想要正好2位小数:

/^\s*[+-]?\d+[.,]\d{2}\s*$/

关于它只接受整数值:模式是,它允许匹配整数值和浮点值,您确定您正在检查/将规则分配给/正确的元素吗?请注意,
[0-9]*
匹配0个或多个数字,
[,]?
匹配1或0个逗号/句点。根据您的要求,用户必须输入这样的值,只需将其修改为:
/^\s*[-+]?[0-9]+[,][0-9]+([eE][-+]?[0-9]+)?\s*$/
或者如果不允许使用科学符号,使用更简单的
/^\s*\d+[,]\d+\s*$/
谢谢您的回复。。它仍然不起作用。其接受值为55.6666。我想取55.66这样的值,如果您也将
'numberPattern'
替换为
'pattern'
?谢谢您的回复。。它仍然不起作用。其接受值为55.6666。我想取55.6655.6666这样的值是有效百分比,你想只取55.66吗?现在检查答案是的,我只想取55.66-更新后的答案也不起作用如果你将非捕获更改为捕获组(即在组开始时删除
?:
),部分起作用。如果我输入eg:55,它现在不会显示错误消息。@SalmanRiyaz:您想接受整数(即
45
)还是只接受最大小数点为2的浮点?我想要最大小数点为2的浮点。比如45.55I只需添加一个['c_percentage','compare','compareValue'=>100',operator'=>