正则表达式以50为步长验证数字范围从50到1000

时间:2019-01-31 13:55:56

标签: php regex

我迷上了正则表达式,可以以50为步长验证50到1000之间的数字。

有人可以帮忙弄清楚吗?

2 个答案:

答案 0 :(得分:1)

为什么要使用正则表达式?那样只会使其变得复杂

使用范围和in_array的数组。

$range = range(50,1000,50);

$input = 34;   
var_dump(in_array($input, $range)); // false


$input = 150;
var_dump(in_array($input, $range));//true

https://3v4l.org/3ToT9


正则表达式的版本是这样的:

5000结尾或恰好为1000的树位数。

$input = 950;

var_dump(preg_match("/\b\d{1}[5|0]0\b|\b1000\b/", $input));

答案 1 :(得分:0)

Andreas 的正则表达式匹配 0502|09|0000,但不匹配 50。此外 {1} 在模式中没有任何作用。字符类中的管道完全不正确。

这是一个正确的模式,它禁止在 50...

代码:

preg_match('/^(?:100|5|[1-9][05])0$/', $string)

由于字符串锚点的开头 ^ 和结尾 $,此模式匹配完整字符串。

它有效地匹配:

  1. 1000
  2. 50
  3. 任何以 0050 结尾的三位数

在所有符合条件的情况下,该号码的长度至少为 2 位数,并以零结尾。