我想确保当用户在在线表单上输入号码时,他必须输入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";
}
}
但这似乎过于简单和错误。有人可以帮忙吗?
答案 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。