繁体   English   中英

验证用户输入

[英]Validating a user input

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

  • 长度为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中执行此操作。

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");

    }

}

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

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

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

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

可能还有一些javascript的东西,你可以做更容易,但我无法帮助你。

这看起来是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循环正在检查用户错误,因此大多数验证都是相反的。 创建了一个检查大写和整数的函数。 一些研究发现了一些很好的正则表达式。

希望这可以帮助。

您可以使用Java正则表达式 ,请按照以下链接:

常用表达

Java正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM