我一直在解决这个问题已有一段时间,并希望获得一些指导。我提示用户输入“课程”信息(例如AAA.111#2222_aa-1234
)
然后,我为HTML页面创建了一个验证函数和按钮,以从javascript中获取
在我的isValidInfo函数中,我可以使用它:
var infoRegExp = /^(\D{3}.\d{3}#\d{4}_\D{2}-\d{4})$/g;
使用IF语句,但else语句不会产生“无效信息”消息。
此外,一旦我将函数内的代码更改为区分大小写,即;
/^(\D[A-Z][A-Z][A-Z].\d{3}#\d{4}_\D[a-z][a-z]-\d{4})$/i;
验证功能/按钮不起作用。
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Input Course Info</title>
</head>
<body>
<script src = "course.js"></script>
<button onclick= "validate()">Validate</button>
</body>
</html>
function isValidInfo(course) {
var infoRegExp = /^(\D[A-Z][A-Z][A-Z].\d{3}#\d{4}_\D[a-z][a-z]-\d{4})$/i;
var result = infoRegExp.test(course);
return result
}
var course = prompt("Enter course information (format: AAA.111#2222_aa-1234): ");
function validate(){
if (isValidInfo(course)) {
document.write("Valid information!");
} else {
documwnt.write("Invalid information.")
}
}
我需要能够点击验证按钮,并产生一个“有效信息!”消息或“无效信息”。信息。 任何有用的指导,将不胜感激。 现在,按原样使用代码,validate按钮不会执行任何操作。如果我输入aaa.111#2222_aa-1234,则删除[AZ] ...和[az]并将'i'更改为'g'可以使它正常工作,但是任何其他ELSE都不会产生发现无效信息的消息。
答案 0 :(得分:2)
您可以使用
function isValidInfo(course) {
var infoRegExp = /^[A-Z]{3}\.\d{3}#\d{4}_[a-z]{2}-\d{4}$/i; // Remove i flag if aaa.111#2222_aa-1234 is invalid!
var result = infoRegExp.test(course);
return result
}
var course = prompt("Enter course information (format: AAA.111#2222_aa-1234): ");
function validate(){
if (isValidInfo(course)) {
return "Valid information!";
} else {
return "Invalid information.";
}
}
console.log(validate(course));
regex demo is available here。请注意,应该使用您的validate()
参数调用course
函数,因此我在validate(course)
中添加了console.log()
。
另外,请参见regex graph:
详细信息
^
-字符串的开头[A-Z]{3}
-三个字母(不区分大小写的修饰符也使其与小写字母匹配)\.
-一个点\d{3}
-三位数#
-一个#
字符\d{4}
-四位数_
-下划线[a-z]{2}
-任意2个字母-
-连字符\d{4}
-四位数字(不区分大小写的修饰符也使其与小写字母匹配)$
-字符串的结尾。