Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 在Google工作表上验证用户输入的时间_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 在Google工作表上验证用户输入的时间

Javascript 在Google工作表上验证用户输入的时间,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有以下变量赋值 function onEdit(e) { if (e.range.getColumn() == 3){ var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(e.value); } } 我试图测试当一个人编辑Google电子表格第三列中的值时,他们输入的值是否是一个有效的时间,格式为HH:MM,带有am或PM 我在互联网上找到了上述内容,但我以前从未见过这种理解时

我有以下变量赋值

function onEdit(e) {
    if (e.range.getColumn() == 3){
      var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(e.value);
   }
}
我试图测试当一个人编辑Google电子表格第三列中的值时,他们输入的值是否是一个有效的时间,格式为HH:MM,带有am或PM

我在互联网上找到了上述内容,但我以前从未见过这种理解时间的方式。有人能给我解释一下发生了什么,或者把我链接到一篇关于上述语法如何工作的文章上吗

希望最终能够做到这样:

function onEdit(e){
    if (the user edits manually edits a value in the third column){
       determine whether the value they entered is a valid time 
       if it is{
          let the change go through
       }
       if it is not{
           alert("Sorry your change can't go through");
       }
    }

}

据我所知,警报已经使用了正确的语法

您所发现的被称为“正则表达式”(RegEx或RegExp),它是一种用于匹配字符串的语法,功能非常强大,可能非常复杂。有很多关于正则表达式的长篇书籍,所以我将试着给你一个关于正则表达式如何工作的简要概述,而不会陷入许多具体细节的泥沼中,而这些细节是真正完整地解释正则表达式所需要的

请参见此处的RegEx wikipedia:

请参阅有关在javascript中使用正则表达式的文档:

要清楚,在您的示例中,正则表达式部分是以下语句:

/^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/
下面简要介绍了该方法的工作原理:

  • 斜杠(/)表示正则表达式的开始和结束
  • ^匹配字符串的开头
  • $匹配字符串的结尾
  • ??表示“可选地匹配”紧靠其前面的组或字符
  • |意思是“或”
  • 大括号()用于将一组匹配项分组在一起
  • []指示要匹配的字符集。[0-9] 将匹配0到9之间的任何数字 :是一个文字字符,它匹配:在有效时间的中间。
因此:

^([0-1]?[0-9]| 2[0-4]):
表示从字符串开头到第一个冒号,匹配0到19或20到24-表示小时。第一个[0-1]后面的问号使其成为可选的,因此您可以将凌晨2点匹配为2:00或02:00

([0-5][0-9])(:[0-5][0-9])?$
表示匹配分钟(00到59)和可选匹配秒(:加00到59),直到字符串末尾

包含^和$特殊字符可确保字符串中没有多余的字符

最后要注意的是,由于正则表达式语法可能非常复杂,阅读起来也很有挑战性,所以不要盲目相信你在网上找到的正则表达式来做任何重要的事情。对于验证之类的事情,有许多糟糕或构造糟糕的正则表达式。一般来说,如果你遇到一个你不理解的正则表达式,并且你不知道它是如何工作的,那么最好找到另一个你理解的解决方案