模式匹配,不以零开头

时间:2013-04-01 03:40:07

标签: php javascript design-patterns matching

我有一个用户输入其年龄的字段,我想做一些错误检查。如果用户输入数字“0”并单击submit,则会显示一条错误消息,指出它们不能以零开头。但我也想允许一个包含数字零的年龄,例如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."; ?>

5 个答案:

答案 0 :(得分:1)

为什么不呢

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

答案 1 :(得分:1)

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

^(0|[1-9]\d*)$

答案 2 :(得分: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

答案 3 :(得分:0)

$begin_with_zero = preg_match("/^0/", $age);
<?php if ($begin_with_zero) echo "Can't begin with zero."; ?>

答案 4 :(得分:0)

没有正则表达式:

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

另请参阅:strspn()