[英]Validating regular expression
我一直在处理此问题已有一段时间,并希望获得一些指导。 我提示用户输入“课程”信息(示例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都不会产生发现无效信息的消息。
您可以使用
function isValidInfo(course) { var infoRegExp = /^[AZ]{3}\\.\\d{3}#\\d{4}_[az]{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演示可在此处获得 。 请注意, validate()
函数应与您的course
参数一起调用,因此我在console.log()
添加了validate(course)
console.log()
。
另外,请参阅正则表达式图 :
细节
^
-字符串的开头 [AZ]{3}
-三个字母(不区分大小写的修饰符也使其与小写字母匹配) \\.
-一个点 \\d{3}
-三位数 #
-一个#
字符 \\d{4}
-四位数 _
下划线 [az]{2}
-任意2个字母 -
连字符 \\d{4}
-四位数(不区分大小写的修饰符也使其与小写字母匹配) $
-字符串结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.