preg_match获取利率
我试图验证并从用户输入中获得“利率”。preg_match获取利率
我想接受1% - > 99%的数字,并且有0,1或2位小数的能力。我也不介意他们是否包含“%”。
即
- 3.2
- 3.45%
- 44%
- 4.00%
我能找到的最好的是
/([0-9]{1,2})%/
但是,尽可能接近...任何帮助将不胜感激。
回答:
<?php $regex = '~^(\d{1,2})(\.(\d{1,2}))?\%?$~';
$shouldMatch = array(
'3.2',
'3.45%',
'44%',
'4.00%'
);
foreach($shouldMatch as $interest) {
var_dump(preg_match($regex, $interest));
}
说明:它必须启动(2)用一个或两个数字(\ d {1,2})。然后,你可以有一个以a开头的组。 (尽管在荷兰会使用逗号)。然后,它必须跟着一个或两个数字。 ((\ d {1,2}))。该组是可选的(?)。然后,有一个可选的百分号(%?),该字符串应该在那里结束($)。
编辑:您可能还需要使用一个(快?)非正则表达式的选择:
<?php $shouldMatch = array(
'3.2',
'3.45%',
'44%',
'4.00%'
);
foreach($shouldMatch as $interest) {
$interest = trim($interest, '%');
var_dump(is_numeric($interest) && $interest < 100);
}
回答:
尝试使用此正则表达式:在正则表达式
/(\d{1,2}(\.\d{1,2})?)%?/
回答:
此正则表达式应该工作:
/(?<!\d)(\d{1,2}(?:\.\d*)?|\.\d+)%/
对于这个数据:.56% 4.45% 99.99999% 0.112% 6% 0% 34% 3.% 99% 100% .% .0% 1.2342343%
它生产:
Array (
[0] => Array
(
[0] => .56%
[1] => 4.45%
[2] => 99.99999%
[3] => 0.112%
[4] => 6%
[5] => 0%
[6] => 34%
[7] => 3.%
[8] => 99%
[9] => .0%
[10] => 1.2342343%
)
[1] => Array
(
[0] => .56
[1] => 4.45
[2] => 99.99999
[3] => 0.112
[4] => 6
[5] => 0
[6] => 34
[7] => 3.
[8] => 99
[9] => .0
[10] => 1.2342343
)
)
这是匹配来自某些文本的用户输入的解决方案。从文本捕捉有点不同,所以我需要%
。
编辑
如果你想验证用户输入,与你期望在该领域唯一的1号的假设。
/^\s*(\d{1,2}(?:\.\d{0,2})?|\.\d{0,2})%?\s*$/
这也将使小数点后的所有数字超过2位数无效。这也允许百分比数字前后的空格。
回答:
function isPostiveNegativeThreeDecimalNumbersOnly(value) { var pattern = /^[-+]?(\d{1,3})(\.(\d{1,3}))?$/;
return pattern.test(value);
}
您可以验证三个十进制数与负数
例如
1.2,1.23,1.234,22.1,123.123,-1,-1.122,-222,222
所有值都
以上是 preg_match获取利率 的全部内容, 来源链接: utcz.com/qa/261204.html