0

我有一个用户输入年龄的字段,我想做一些错误检查。如果用户输入数字“0”并单击submit,它将显示一个错误,指出他们不能以零开头。但我也想允许包含数字 0 的年龄,例如 20 岁。我不知道如何不允许某人输入 0 的开头数字。

我的 PHP 代码是:

<?php
$age_numeric = preg_match("/^(^[1-9]){1,}$/", $age);
?>
//some more code
<?php if (!$age_numeric) echo "age can only be numeric."; ?>
4

5 回答 5

1

那么为什么不只是

$age_numeric = preg_match("/^[1-9][0-9]*$/", $age);

?

于 2013-04-01T03:42:46.297 回答
1

此正则表达式匹配不带前导零的有效数字:

^(0|[1-9]\d*)$
于 2013-04-01T03:46:01.790 回答
0

采用is_numeric

if(!empty($age) && is_numeric($age)) {
  echo 'valid age';
} else {
  echo 'invalid age';
}

// 样本输出

$age = 0; // invalid age
$age = ''; // invalid age
$age = 'lkjsd'; // invalid age
$age = 12a; // invalid age
$age = 1; // valid age
于 2013-04-01T03:43:42.577 回答
0

或者

$begin_with_zero = preg_match("/^0/", $age);
<?php if ($begin_with_zero) echo "Can't begin with zero."; ?>
于 2013-04-01T03:44:29.860 回答
0

没有正则表达式:

if (is_numeric($age) && strspn($age, '0') == 0) {
    // $age is numeric and doesn't start with "0"
}

也可以看看:strspn()

于 2013-04-01T04:57:41.617 回答