Validation 谷歌用户界面脚本验证匹配不';不起作用,validateNotMatches起作用
我正在使用谷歌脚本设计一个表单。我有两个文本框需要保存时间值,我想确保输入是有效的Validation 谷歌用户界面脚本验证匹配不';不起作用,validateNotMatches起作用,validation,google-apps-script,Validation,Google Apps Script,我正在使用谷歌脚本设计一个表单。我有两个文本框需要保存时间值,我想确保输入是有效的 function setupTimeValidators(widget) { var timeRe = /(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i; var onValid = (UiApp.getActiveApplication().createClientHandler() .validateMatches(widget, tim
function setupTimeValidators(widget) {
var timeRe = /(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i;
var onValid = (UiApp.getActiveApplication().createClientHandler()
.validateMatches(widget, timeRe)
.forTargets(widget)
.setStyleAttribute("background", "#FFFFFF"));
var onInvalid = (UiApp.getActiveApplication().createClientHandler()
.validateNotMatches(widget, timeRe)
.forTargets(widget)
.setStyleAttribute("background", "#FFCCCC"));
widget.addKeyUpHandler(onValid);
widget.addKeyUpHandler(onInvalid);
}
当我开始在文本框中输入时,onInvalid
部分会改变文本框的背景色,但当我到达01:11 pm
时,它不会变回白色。(我已经用其他值对此进行了测试。)
我确信我的正则表达式可以工作,因为我这样测试它:
function test() {
Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("01:11 pm")); // true
Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("00:11 pm")); // false
Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("10:11 pm")); // true
Browser.msgBox(/(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m/i.test("10:90 pm")); // false
}
你知道会发生什么吗?谢谢 不能将正则表达式对象与ValidateMatch或ValidateNotMatch一起使用。。您应该使用正则表达式的字符串表示形式,例如:
var timeRe = "(0[1-9])|(1[0-2]):[0-5][0-9] ?[ap]m";
var flags = "i";
成功了,谢谢!(当我正确阅读文档时会有所帮助…)
.validateMatches(widget, timeRe, flags)