首页 > 解决方案 > 使用正则表达式验证 PDF 表单中的时间输入字段

问题描述

我在我的 PDF 表单中创建了以下 JavaScript 函数:

var rgTime = /^[^0-9]{1,2}[^:][^0-9]{2}$/;
function testTimeEntry(t) {
if (rgTime.test(t)){
app.alert("Opps!  Time entry is invalid.  Only numbers and the colon(:) are allowed.");
event.value = "";
}
}

然后我testTimeEntry(event.value);在我的时间字段的验证部分使用。但是,只有当我用 5 个字母填写该字段时它才有效。我基本上是想在这个字段中发现意外使用分号(或冒号以外的任何内容)和字母字符。

我没有故意使用该字段的时间格式,但我仍然需要确保输入的格式是 12 小时 (hh:mm)。谢谢!

标签: javascriptpdf

解决方案


您的正则表达式字符串rgTime = /^[^0-9]{1,2}[^:][^0-9]{2}$/只会与完全无效输入的字符串匹配。如果用户输入了一个有效的 'hh' 值,那么这个正则表达式将不匹配。例如"11:1s",您的正则表达式不会匹配该字符串。

也许寻找有效输入并在无效时提醒他们会更容易

var rgTime = /^[0-9]{1,2}[:][0-9]{2}$/;
function testTimeEntry(t) {
if (!rgTime.test(t)){
app.alert("Opps!  Time entry is invalid.  Only numbers and the colon(:) are allowed.");
event.value = "";
}
}

推荐阅读