如何用正则表达式匹配 400 到 550 之间的数字?
How to match numbers ranging from 400 to 550 with regex?
我想验证一个数字字符串,该字符串必须只包含范围从 400 到 550 的数字。
$x = "401"; // valid
$x = "551"; // invalid
我只想匹配 400 和 550 之间的数字。
我尝试了以下模式:
if(preg_match_all("/[400-550]+/",$x));
但是不行。
匹配数字 400-550 的正则表达式模式是什么?
只需组合 in_array()
with range()
,像这样:
if(!in_array($x, range(400, 550)))
echo "in ";
echo "valid";
或者只做一个简单的 if 语句,例如
if($x >= 400 && $x <= 550)
试试这个:
if(preg_match_all("/(4\d\d|5([0-4]\d|50))/",$x)) { ... }
应该有效:
^((4\d\d)|(5([0-4]\d|50)))$
验证此范围的正则表达式方式:
\b(?:4[0-9]{2}|5[0-4][0-9]|550)\b
参见demo。它也适用于较大的文本,因为使用了 \b
边界。在整个字符串的情况下,使用 ^
和 $
代替 \b
.
除非您有使用正则表达式的理由,否则只需比较数字。
if ($x <= 550 && $x >= 400)
它比正则表达式或使用数组范围更快更易读。
尝试/(([4][0-9]{2,2})|([5][0-4][0-9])|(550))/
(我还没有测试过)。不知道有没有更简单的方法
php代码:
<?php
$subject = "550";
$pattern = '/4\d\d|5[0-4][0-9]|550/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
我想验证一个数字字符串,该字符串必须只包含范围从 400 到 550 的数字。
$x = "401"; // valid
$x = "551"; // invalid
我只想匹配 400 和 550 之间的数字。
我尝试了以下模式:
if(preg_match_all("/[400-550]+/",$x));
但是不行。
匹配数字 400-550 的正则表达式模式是什么?
只需组合 in_array()
with range()
,像这样:
if(!in_array($x, range(400, 550)))
echo "in ";
echo "valid";
或者只做一个简单的 if 语句,例如
if($x >= 400 && $x <= 550)
试试这个:
if(preg_match_all("/(4\d\d|5([0-4]\d|50))/",$x)) { ... }
应该有效:
^((4\d\d)|(5([0-4]\d|50)))$
验证此范围的正则表达式方式:
\b(?:4[0-9]{2}|5[0-4][0-9]|550)\b
参见demo。它也适用于较大的文本,因为使用了 \b
边界。在整个字符串的情况下,使用 ^
和 $
代替 \b
.
除非您有使用正则表达式的理由,否则只需比较数字。
if ($x <= 550 && $x >= 400)
它比正则表达式或使用数组范围更快更易读。
尝试/(([4][0-9]{2,2})|([5][0-4][0-9])|(550))/
(我还没有测试过)。不知道有没有更简单的方法
php代码:
<?php
$subject = "550";
$pattern = '/4\d\d|5[0-4][0-9]|550/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>