验证用户输入



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

  • 长度为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。但是此建议仍然适用。

我将采用两种方法。有趣的方式以及您的教授希望您这样做的方式。

有趣的方法是使用REGEX语句验证其匹配。我建议使用此网站来弄清楚:http://regexr.com/

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

可能还可以做一些更轻松地做的JavaScript的事情,但我无法帮助您。

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

正则表达式

Java Regex

这看起来是JavaScript而不是Java。我决定根据您提供的4个规则来调整您的程序以工作。看起来几乎完整,只是缺少几个验证。当您.slice() A 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循环正在检查用户错误,因此大多数验证都会逆转。创建了一个检查大写和整数的函数。一些研究发现了一些不错的正则表达式工作。

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新