Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式检查跨换行符的多个关键字的表单验证脚本_Javascript_Regex_Validation - Fatal编程技术网

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

Javascript 使用正则表达式检查跨换行符的多个关键字的表单验证脚本,javascript,regex,validation,Javascript,Regex,Validation,我需要的是在允许我的学生提交他们的课程总结之前,检查文本区域中的几个关键词。 以下正则表达式只要不单击enter创建新段落,就可以正常工作 /^(?=.*\bmodel|models\b)(?=.*\btheory|theories\b)(?=.*\blaw|laws\b)(?=.*\bscale\b)/i; 从我所阅读的内容来看,下面对regex的修改似乎应该允许我的验证脚本跨换行读取,但我没有取得任何成功 var ck_summary = /^(?=.[\S\s]*\bmodel|mode

我需要的是在允许我的学生提交他们的课程总结之前,检查文本区域中的几个关键词。 以下正则表达式只要不单击enter创建新段落,就可以正常工作

/^(?=.*\bmodel|models\b)(?=.*\btheory|theories\b)(?=.*\blaw|laws\b)(?=.*\bscale\b)/i;
从我所阅读的内容来看,下面对regex的修改似乎应该允许我的验证脚本跨换行读取,但我没有取得任何成功

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);
}
var ck_studentid=/^[0-9]{6,6}$/;
var ck|U summary=/^(?=.[\S\S]*\bmodel | models\b)(?=.[\S\S]*\btheory | Theory\b)(?=.[\S\S]*\bCale\b)/i;
函数验证(sumform){
var studentid=sumform.studentid.value;
var summary=sumform.summary.value;
var错误=[];
如果(!ck_studentid.test(studentid)){
错误[errors.length]=“检查学生ID”;
}
如果(!ck_summary.test(summary)){
errors[errors.length]=“确保您使用了所有词汇表术语,并且拼写正确。”;
}
如果(errors.length>0){
报告错误(错误);
返回false;
}
返回true;
}
函数报告错误(错误){
var msg=“哦,看来我们有问题了…\n”;
对于(var i=0;i
从我所读到的来看,似乎如下
对regex的修改应该允许我的验证脚本读取
越界突破,但我还没有取得任何成功

这对您不起作用,因为您没有很好地修改它

*:
捕获除新行以外的所有字符/单词
\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;

这很有效!非常感谢詹姆斯花时间解释我的错误。我感谢你的时间!
var ck_summary = /^(?=[\S\s]*\bmodel|models\b)(?=[\S\s]*\btheory|theories\b)(?=[\S\s]*\blaw|laws\b)(?=[\S\s]*\bscale\b)/i;