Google 表单中用于密码验证的正则表达式

Regex for password validation at Google Forms

我正在尝试创建一个正则表达式来验证我的 Google 表单中的类似密码的字段。我面临的问题是 Google 表单的正则表达式验证 不支持先行 。它给出了 “请输入有效的正则表达式” 错误。所以我坚持创建一个没有先行的正则表达式。

我的密码验证正则表达式必须满足以下两个条件:

  1. 字符长度必须至少为 9 个字符
  2. 必须至少有一个数字和至少一个字母。

因此,像 password12、12PASSWORD、pass12word、12pasSWord12、pas12pas12pas12!!@@ 等字符串都应该被正则表达式接受。

我目前已经尝试像下面的表达式一样使用前瞻性,它在其他正则表达式验证模块上运行良好,但在 Google 表单正则表达式上出错。请看这个example 1
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,15}$

我尝试使用如下表达式的 IF 子句创建我的正则表达式。此正则表达式同样适用于其他正则表达式验证,但在 Google 表单中给出错误。请看这个 example 2
\A(?>(?<char>[a-zA-Z])|(?<digit>[0-9])|.){8,}?((?(char)(?(digit)|(?!))|(?!)))


现在我不能使用前瞻,我也不能使用 IF 条件。所以我的猜测是我只剩下简单直接的正则表达式。我曾尝试创建几个这样的正则表达式,但它们仅适用于特定类型的密码变体。

例如,以下这些正则表达式在那里工作,但它们不完整:

(([0-9]+[a-zA-Z]*){9,}[a-zA-Z]+)|(([a-zA-Z]+[0-9]*){9,}[0-2]+) => 这只验证像 password12 或 12password 这样的字符串
([a-zA-Z]*[0-9]*[a-zA-Z][0-9][a-zA-Z]*[0-9]*){9,} => 这只验证 p1p2p3p4p5p6p7

你能帮我创建一个与上述 2 个正则表达式类似的正则表达式,它将满足所需的两个条件(长度>8 和至少一个字母和数字)吗?

如果能得到任何帮助,我将不胜感激。谢谢!

如果您可以在一个输入上设置多个条件,您就可以解决问题:

Validate 2 Conditions in Google Forms Field

Google 表单提供了一个脚本实用程序 (JavaScript) 让表单创建者可以做更多的事情。但令人惊讶的是,即使使用脚本你仍然无法实现你想要的。基于“

function validationTest() {
  var form = FormApp.getActiveForm();
  var items = form.getItems();
  var textValidation = FormApp.createTextValidation()
    .requireTextLengthGreaterThanOrEqualTo(9)
    .requireTextContainsPattern('[0-9]')
    .requireTextContainsPattern('[a-zA-Z]')
    .build();
  for (var i = 0; i<items.length; i++) {
    items[i].asTextItem().setValidation(textValidation);
  };
}

但只有最后一个条件适用。我也在脚本中尝试了 /^(?=.*[0-9])(?=.*[a-zA-Z]).{9,}$/g,但没有成功。

google 支持页面上也有一个类似的问题没有得到解答: https://support.google.com/docs/thread/15036083?hl=en

最后我找到了“Choice Limit | Form Limit | Choice Remove Removal”,这是一个付费插件,有一个“contains RegEx”特征。我自己没用过,希望对你有帮助。

显然没有简单的解决方案。这是一个考虑到字符串所有可能变化的解决方案。

.*([A-Za-z][0-9]......|[A-Za-z].[0-9].....|[A-Za-z]..[0-9]....|[A-Za-z]...[0-9]...|[A-Za-z]....[0-9]..|[A-Za-z].....[0-9].|[A-Za-z]......[0-9]|[0-9][A-Za-z]......|[0-9].[A-Za-z].....|[0-9]..[A-Za-z]....|[0-9]...[A-Za-z]...|[0-9]....[A-Za-z]..|[0-9].....[A-Za-z].|[0-9]......[A-Za-z]|.[A-Za-z][0-9].....|.[A-Za-z].[0-9]....|.[A-Za-z]..[0-9]...|.[A-Za-z]...[0-9]..|.[A-Za-z]....[0-9].|.[A-Za-z].....[0-9]|.[0-9][A-Za-z].....|.[0-9].[A-Za-z]....|.[0-9]..[A-Za-z]...|.[0-9]...[A-Za-z]..|.[0-9]....[A-Za-z].|.[0-9].....[A-Za-z]|..[A-Za-z][0-9]....|..[A-Za-z].[0-9]...|..[A-Za-z]..[0-9]..|..[A-Za-z]...[0-9].|..[A-Za-z]....[0-9]|..[0-9][A-Za-z]....|..[0-9].[A-Za-z]...|..[0-9]..[A-Za-z]..|..[0-9]...[A-Za-z].|..[0-9]....[A-Za-z]|...[A-Za-z][0-9]...|...[A-Za-z].[0-9]..|...[A-Za-z]..[0-9].|...[A-Za-z]...[0-9]|...[0-9][A-Za-z]...|...[0-9].[A-Za-z]..|...[0-9]..[A-Za-z].|...[0-9]...[A-Za-z]|....[A-Za-z][0-9]..|....[A-Za-z].[0-9].|....[A-Za-z]..[0-9]|....[0-9][A-Za-z]..|....[0-9].[A-Za-z].|....[0-9]..[A-Za-z]|.....[A-Za-z][0-9].|.....[A-Za-z].[0-9]|.....[0-9][A-Za-z].|.....[0-9].[A-Za-z]|......[A-Za-z][0-9]|......[0-9][A-Za-z]).*

访问这里进行测试:https://regexr.com/5pimr