【问题标题】:Google Apps Script Form textValidationBuilder does not recognize regex patternGoogle Apps 脚本表单 textValidationBuilder 无法识别正则表达式模式
【发布时间】:2021-09-02 13:44:09
【问题描述】:

我正在尝试使用应用程序脚本创建一个表单,但由于某种原因,它不允许在 TextItem 输入字段中进行最简单的电话号码验证。我只需要用户输入他们的 10 位数字,没有空格、破折号、点,包括区号。我知道这不是验证电话号码的技术“最佳”方式,但出于我们的目的,它是有效的。这是我必须生成该字段的代码部分。 (编辑以制作更可重复的示例)

function CreateForm() {
  var form = FormApp.create('Test');

  var tenantNum = form.addTextItem()
  .setTitle("Tenant Phone #");
  var phoneValid = FormApp.createTextValidation()
  .setHelpText("Please enter valid phone number, 10-digits, no symbols or spaces.")
  .requireTextMatchesPattern(/\d{10}/g)
  .build();
  tenantNum.setValidation(phoneValid);

  console.log(form.getPublishedUrl())
}

我也尝试过其他方法,例如:

(没有捕获组或全局标记,两者都是单独的)

.requireTextMatchesPattern(/\d{10}/)

输入正则表达式作为字符串文字。

.requireTextMatchesPattern("\d{10}")

甚至是像傻瓜一样的东西。

.requireTextMatchesPattern(/[0-9]{10}/)

.requireTextMatchesPattern(/\d\d\d\d\d\d\d\d\d\d/)

只是看看它是否有效。我也试过.requireTextContainsPattern()

每当您输入表单时,我都会收到以下回复:

请输入有效的电话号码,10 位数字,无符号或空格。

我唯一的想法是,用户是否输入字符串与数字可能会有些混淆,并且此方法仅适用于字符串。但是这个验证 当您手动将其输入到表单创建中时,正则表达式工作正常,所以我完全迷路了。任何帮助表示赞赏!

【问题讨论】:

  • TextValidationBuilder 类中没有 setHelpText() 方法
  • 这是我从 Apps Script Docs 中提取的代码。 developers.google.com/apps-script/reference/forms/…
  • 哦,我想这是同一个参考。但是看看方法。没有 setHelpText 所以我猜写这个例子的人可能搞砸了。
  • 我向他们发送了反馈,让他们知道可能的错误。
  • 无论如何都不起作用,现在它只是无法识别它并说“必须匹配模式”。

标签: regex forms google-apps-script


【解决方案1】:

只是猜测...试试这个:

.requireTextMatchesPattern("\\d{10}")

更新

对我来说很好用:

function CreateForm() {
  var form = FormApp.create('Test');

  var tenantNum = form.addTextItem()
  .setTitle("Tenant Phone #");
  var phoneValid = FormApp.createTextValidation()
  .setHelpText("Please enter valid phone number, 10-digits, no symbols or spaces.")
  .requireTextMatchesPattern("\\d{10}")
  .build();
  tenantNum.setValidation(phoneValid);

  console.log(form.getPublishedUrl())
}

“不存在”方法setHelpText() 也可以正常工作,您可以从屏幕截图中看出。

【讨论】:

  • 不,不幸的是那没有用。不过感谢您的帮助!
  • 我对谷歌表单不是很流利。如果您发布代码的可重现片段,我会尝试找出错误所在。也许不仅我也可以尝试。
  • 我编辑了它!对不起,这还是新手。再次感谢
  • 我的回答 .requireTextMatchesPattern("\\d{10}") 的尝试对我来说很好。
  • Lmao 我现在死了,我确实尝试过,但可能我在执行您的方法时将全局标签留在了其中,这搞砸了。这绝对令人困惑,因为在 Apps Script 中几乎所有其他地方它都遵循 RegExes 的典型 Javascript 语法,但在这里我猜想要实际的字符串。非常感谢!
猜你喜欢
  • 2017-07-16
  • 2022-12-04
  • 2015-04-11
  • 2013-06-02
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多