You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单问题TextValidation的AppsScript正则无法识别数字或N/A

问题:Google表单TextValidation正则无法匹配数字或"N/A"

我在为表单问题配置TextValidation的正则表达式时遇到了问题。需要验证用户输入的内容是数字或"N/A",但尝试使用正则模式(\d*)|(N/A)时,规则完全不起作用。做了以下测试:

  • 使用(\d*)可以正常验证数字输入;
  • 使用(N/A)可以正常验证"N/A"输入;
  • 使用(N/A)|(n/a)可以正常验证"N/A"或"n/a"输入。

困惑于组合后的正则为何失效,代码如下:

let item = form.addTextItem();
let textValidation = FormApp.createTextValidation()
   .setHelpText('Take another look matey')
   .requireTextMatchesPattern("(\\d*)|(N/A)")
   .build();
item.setValidation(textValidation);

问题原因

(\d*)表示匹配0个或多个数字,这意味着空字符串也会被该分支匹配。正则的逻辑是只要任意一个分支匹配就判定通过,所以不管用户输入什么内容,正则都会优先匹配到空字符串,直接通过验证,自然起不到限制作用。

解决方案

需要用^(字符串开头)和$(字符串结尾)锚定整个输入,确保完全匹配;同时把\d*改为\d+,要求至少输入1个数字(避免空输入被误判为数字)。

1. 严格匹配数字(至少1位)或"N/A"

修改后的正则:

^\d+$|^N\/A$

对应代码:

let item = form.addTextItem();
let textValidation = FormApp.createTextValidation()
   .setHelpText('Take another look matey')
   .requireTextMatchesPattern("^\\d+$|^N\\/A$")
   .build();
item.setValidation(textValidation);

2. 支持大小写(允许"N/A"或"n/a")

添加(?i)标记忽略大小写,正则:

(?i)^(\d+|N\/A)$

对应代码:

let item = form.addTextItem();
let textValidation = FormApp.createTextValidation()
   .setHelpText('Take another look matey')
   .requireTextMatchesPattern("(?i)^(\\d+|N\\/A)$")
   .build();
item.setValidation(textValidation);

内容的提问来源于stack exchange,提问作者meelszz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:07:06