Preg_match编号

时间:2014-12-22 11:31:52

标签: php

我想确保当用户在在线表单上输入号码时,他必须输入1到5之间的号码,而其他号码不应该有效。例如,如果用户输入“6”,他将收到诸如“请输入1到5之间的数字”之类的消息。有人可以告诉我如何用PHP编写代码吗?我能想到的是

               if (empty($_POST["number"])) {
     $numberErr = "Number is required";
         } else {
     $number = test_input($_POST["number"]);
     // check if number is between 1 and 5 inclusive
     if (!preg_match("/^[1-5 ]*$/",$number)) {
       $number = "";
       $numberErr = "Only a number between 1 and 5 is allowed";

     }
   }

但这似乎过于简单和错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

以这种方式尝试:

if (!preg_match("/^[1-5]$/D",$number)) {

没有空格和星星以及D修饰符。

您的原始图案也与空间匹配,*使其与任何长度匹配。 (任何也意味着零......)

D有助于避免php不关心尾随换行符的奇怪行为。

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

  

D(PCRE_DOLLAR_ENDONLY)

     

如果设置了此修饰符,则模式中的美元元字符仅匹配主题字符串的末尾。没有这个修饰符,   如果是,美元也会在最终字符之前立即匹配   换行符(但不在任何其他换行符之前)。这个修饰符是   如果设置了m修饰符,则忽略。没有与此修饰符等效的内容   在Perl。