使用正则表达式的表单验证脚本,以检查换行符中的多个关键字

时间:2015-09-26 17:48:36

标签: javascript regex validation

在让学生提交课程摘要之前,我需要检查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);
}

1 个答案:

答案 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;