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

回到顶部