我迷上了正则表达式,可以以50为步长验证50到1000之间的数字。
有人可以帮忙弄清楚吗?
答案 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
正则表达式的版本是这样的:
以50
或00
结尾或恰好为1000的树位数。
$input = 950;
var_dump(preg_match("/\b\d{1}[5|0]0\b|\b1000\b/", $input));
答案 1 :(得分:0)
Andreas 的正则表达式匹配 050
、2|0
、9|0
和 000
,但不匹配 50
。此外 {1}
在模式中没有任何作用。字符类中的管道完全不正确。
这是一个正确的模式,它禁止在 50
...
代码:
preg_match('/^(?:100|5|[1-9][05])0$/', $string)
由于字符串锚点的开头 ^
和结尾 $
,此模式匹配完整字符串。
它有效地匹配:
1000
或50
或00
或 50
结尾的三位数在所有符合条件的情况下,该号码的长度至少为 2 位数,并以零结尾。