Javascript 验证正则表达式
我研究这个问题已经有一段时间了,希望能得到一些指导。我正在提示用户输入“课程”信息(示例Javascript 验证正则表达式,javascript,html,regex,Javascript,Html,Regex,我研究这个问题已经有一段时间了,希望能得到一些指导。我正在提示用户输入“课程”信息(示例AAA.111#2222_aa-1234) 然后,我创建了一个验证函数和按钮,用于从javascript中获取html页面的源代码 在isValidInfo函数中,我可以让它使用: var infoRegExp = /^(\D{3}.\d{3}#\d{4}_\D{2}-\d{4})$/g; 使用IF语句,但else语句不会生成“Invalid information”消息 还有一次,我将函数中的代码更改为
AAA.111#2222_aa-1234
)
然后,我创建了一个验证函数和按钮,用于从javascript中获取html页面的源代码
在isValidInfo函数中,我可以让它使用:
var infoRegExp = /^(\D{3}.\d{3}#\d{4}_\D{2}-\d{4})$/g;
使用IF语句,但else语句不会生成“Invalid information”消息
还有一次,我将函数中的代码更改为区分大小写的ie
/^(\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.")
}
}
输入课程信息
验证
函数isValidInfo(课程){
var infoRegExp=/^(\D[A-Z][A-Z][A-Z]。\D{3}\D{4}\ud[A-Z][A-Z]-\D{4}$/i;
var结果=infoRegExp.test(课程);
返回结果
}
var课程=提示(“输入课程信息(格式:AAA.111#2222_aa-1234):”;
函数验证(){
if(isValidInfo(课程)){
文件。填写(“有效信息!”);
}否则{
documwnt.write(“无效信息”)
}
}
我需要能够单击“验证”按钮,生成“有效信息!”消息或“无效信息”。消息。
任何有益的指导都将不胜感激。
现在代码保持原样,validate按钮什么也不做。正在删除[A-Z]。。。和[a-z],如果我输入aaa.111#2222_aa-1234,则将“i”更改为“g”将使其工作,但任何其他操作都不会产生显示无效信息的消息。您可以使用
函数isValidInfo(课程){
var infoRegExp=/^[A-Z]{3}\.\d{3}\d{4}\[A-Z]{2}-\d{4}$/i;//如果aaa.111#2222_aa-1234无效,请删除i标志!
var结果=infoRegExp.test(课程);
返回结果
}
var课程=提示(“输入课程信息(格式:AAA.111#2222_aa-1234):”;
函数验证(){
if(isValidInfo(课程)){
返回“有效信息!”;
}否则{
返回“无效信息”;
}
}
console.log(验证(课程))
使用i
标志意味着[A-Z]
和[A-Z]
之间没有区别,你有documwnt.write()
你需要/^[A-Z]{3}.\d{3}.\d{4}.[A-Z]{2}-\d{4}$/i
,请查看docwnt.write中的打字错误(.write(-/docwnt>);这就是它什么都不做的原因:它“崩溃了”。不管怎样,正则表达式是错误的,@WiktorStribiżew正则表达式是正确的,但是没有尾部的i
。另外,使用console.log
而不是document也是一种很好的做法。write
@DanielF如果OP确实不需要区分大小写,则可以安全地删除i
。在我的解释中,这是清楚的。我之所以使用I
,是因为问题的最后一句话(我理解aaa.111#2222_aa-1234
是有效的)谢谢。是的,这很有效!我懂了。因此,我不需要用“\d”或“\d”来指定字符类。我可以不使用[A-Z]{3}。也不需要()@KButler Yes,请注意,i
修饰符使[A-Z]
=[A-Z]
进一步澄清/[A-Z][A-Z]/
与/[A-Z]/i
相同\D{3}
特别表示3个非数字字符,因此任何非0123456789
的字符都将被匹配。@PaulJ/[a-z][a-z]/
与/[a-z]/i
不同<代码>/[a-zA-Z]/
是.Derp。。Wiiktor是对的,我刚醒来,完全打错了。