在让学生提交课程摘要之前,我需要检查textarea中的几个关键词。 只要不单击“输入”以创建新段落,以下正则表达式就可以正常工作。
/^(?=.*\bmodel|models\b)(?=.*\btheory|theories\b)(?=.*\blaw|laws\b)(?=.*\bscale\b)/i;
从我一直在阅读的内容看来,正则表达式的以下修改应该允许我的验证脚本读取换行符,但我没有取得任何成功。
var ck_summary = /^(?=.[\S\s]*\bmodel|models\b)(?=.[\S\s]*\btheory|theories\b)(?=.[\S\s]*\blaw|laws\b)(?=.[\S\s]*\bscale\b)/i;
我(显然)是这方面的初学者,渴望学习。任何人都可以解释我做错了什么?非常感谢! 这是我的整个摘要验证脚本......
var ck_studentid = /^[0-9]{6,6}$/;
var ck_summary = /^(?=.[\S\s]*\bmodel|models\b)(?=.[\S\s]*\btheory|theories\b)(?=.[\S\s]*\blaw|laws\b)(?=.[\S\s]*\bscale\b)/i;
function validate(sumform){
var studentid = sumform.studentid.value;
var summary = sumform.summary.value;
var errors = [];
if (!ck_studentid.test(studentid)) {
errors[errors.length] = "Check your Student ID";
}
if (!ck_summary.test(summary)) {
errors[errors.length] = "Make sure you used all of the vocabulary terms AND you spelled them correctly.";
}
if (errors.length > 0) {
reportErrors(errors);
return false;
}
return true;
}
function reportErrors(errors){
var msg = "Uh oh, looks like we have a problem...\n";
for (var i = 0; i<errors.length; i++) {
var numError = i + 1;
msg += "\n" + numError + ". " + errors[i];
}
alert(msg);
}
答案 0 :(得分:0)
从我所阅读的内容来看,似乎如下 修改正则表达式应该允许我的验证脚本阅读 跨越休息时间,但我没有取得任何成功。
var ck_summary = /^(?=.[\S\s]*\bmodel|models\b)(?=.[\S\s]*\btheory|theories\b)(?=.[\S\s]*\blaw|laws\b)(?=.[\S\s]*\bscale\b)/i;
这对你没有用,因为你没有很好地修改它。
.*:
会捕获除换行符\n
之外的每个字符/单词,这就是为什么要求您将其修改为[\S\s]*
,以捕获包含换行符\n
的每个字符/单词}。但是看看你的模式,你并没有完全修改它,你应该在.
之前移除所有点[\S\s]*
。
您的新代码应该是这样的
var ck_summary = /^(?=[\S\s]*\bmodel|models\b)(?=[\S\s]*\btheory|theories\b)(?=[\S\s]*\blaw|laws\b)(?=[\S\s]*\bscale\b)/i;