Php Yii2验证百分比的规则,如65.45
我知道这是一个非常简单且重复的问题,但我几乎尝试了所有方法,但没有得到任何解决方案。 我想验证一个学生喜欢的百分比。例: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*$/'], 请帮忙解决这个问题。提前感谢。试试这个,它会生效的
[['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'=>