我必须验证课程代码的用户输入。代码必须是:
到目前为止,我有这样的事情:
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 + no空格/符号。
答案 0 :(得分:2)
下面的示例将帮助您在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");
}
}
答案 1 :(得分:0)
首先,由于“var”和String.slice(),你显然没有使用Java。但这个建议仍然适用。
我会采取两种方法。有趣的方式,以及教授希望你这样做的方式。
有趣的方法是使用正则表达式语句来验证它是否匹配。我建议使用这个网站来解决这个问题:http://regexr.com/
你的教授可能希望你这样做的方法是一次迭代1个字符,并检查每个字符是否应该给它的位置。
可能还有一些javascript的东西你可以做得更容易,但我无法帮助你。
答案 2 :(得分:0)
这看起来是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循环正在检查用户错误,因此大多数验证都是相反的。创建了一个检查大写和整数的函数。一些研究发现了一些很好的正则表达式。
希望这有帮助。
答案 3 :(得分:0)