【问题标题】:Validating a user input验证用户输入
【发布时间】:2017-09-11 09:25:37
【问题描述】:

我必须验证课程代码的用户输入。代码必须是:

  • 长度为7
  • 前 3 个字符为大写字母
  • 后四位是 1000 到 9999 之间的数字
  • 没有空格也没有符号。

到目前为止,我有这样的东西:

var inputMessage = "Please enter valid course code";
var userInput = " ";

userInput = prompt (inputMessage);

while (userInput.length !=7 || userInput.slice(-4)<1000 || userInput.slice(-4)>9999)
{
    alert ("Invalid Course Code. Please try again");
    userInput = prompt(inputMessage);
}

任何帮助都会很棒。我正在为 alpha + 没有空格/符号而苦苦挣扎。

【问题讨论】:

  • 嘿,上面的代码好像不是用java写的 "var inputmessagge="" " is not allowed .insted use String
  • 你提到了Java,但看起来你在写javascript??

标签: javascript validation user-input alphanumeric


【解决方案1】:

这看起来是 Javascript 而不是 Java。我决定调整您的程序以根据您提供的 4 条规则工作。它看起来几乎完成了,只是缺少一些验证。当您 .slice()string 时,您要确保在括号内传递两个参数 - 您要“切片”字符串的第一个和最后一个位置。

这里是 Javascript 代码:

function isUpperCase(str) {
    return str === str.toUpperCase();
}

function isInteger(value) {
  return /^\d+$/.test(value);
}

var inputMessage = "Please enter valid course code";
var userInput = "";
userInput = prompt (inputMessage);

while (
  userInput.length !=7                 || //length
  !isUpperCase(userInput.slice(0,3))   || //first 3 UpperCase
  !isInteger(userInput.slice(3,7))     || //last 4 is integer
  userInput.slice(3,7)<1000            || //last 4 is at least 1000
  userInput.slice(3,7)>9999            || //last 4 is maximum 9999
  userInput.match(/[^A-Za-z0-9\-_]/)      //no space / spec chars
  )
{
 alert ("Invalid Course Code. Please try again");
 userInput = prompt(inputMessage);
}

您可能已经知道,while 循环正在检查用户错误,因此大部分验证都被颠倒了。创建了一个检查大写和整数的函数。一些研究发现了一些不错的正则表达式。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用 Java 正则表达式,点击以下链接:

    Regular Expressions

    Java Regex

    【讨论】:

      【解决方案3】:

      首先,由于“var”和 String.slice(),您显然没有使用 Java。但是这个建议仍然适用。

      对此我会采取两种方法。有趣的方式,以及您的教授希望您这样做的方式。

      有趣的方法是使用正则表达式来验证它是否匹配。我建议使用这个网站来解决这个问题:http://regexr.com/

      您的教授可能希望您这样做的方式是一次迭代 1 个字符并检查每个字符是否是它应该被赋予的位置。

      您可能还可以做一些 javascript 的事情来更轻松地做到这一点,但我无法帮助您。

      【讨论】:

        【解决方案4】:

        以下示例将帮助您在 Java 中做到这一点。

        import java.util.Scanner;
        import java.util.regex.Pattern;
        
        public class RegexSample {
        
            public static boolean checkPass(String s) {
                Pattern p = Pattern.compile("[A-Z]{3}[0-9]{4}");
                return p.matcher(s).find();
            }
        
            public static void main(String[] args) {
                String inputMessage = "Please enter valid course code";
                String userInput = " ";
                Scanner input = new Scanner(System.in);
                System.out.println(inputMessage);
                userInput = input.nextLine();
        
                while (userInput.length() != 7 || !checkPass(userInput)) {
        
                    System.out.println("Invalid Course Code. Please try again");
                    userInput = input.nextLine();
                }
        
                System.out.println("Input Validated");
        
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-17
          相关资源
          最近更新 更多