Google 表单中用于密码验证的正则表达式
Regex for password validation at Google Forms
我正在尝试创建一个正则表达式来验证我的 Google 表单中的类似密码的字段。我面临的问题是 Google 表单的正则表达式验证 不支持先行 。它给出了 “请输入有效的正则表达式” 错误。所以我坚持创建一个没有先行的正则表达式。
我的密码验证正则表达式必须满足以下两个条件:
- 字符长度必须至少为 9 个字符
- 必须至少有一个数字和至少一个字母。
因此,像 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
我正在尝试创建一个正则表达式来验证我的 Google 表单中的类似密码的字段。我面临的问题是 Google 表单的正则表达式验证 不支持先行 。它给出了 “请输入有效的正则表达式” 错误。所以我坚持创建一个没有先行的正则表达式。
我的密码验证正则表达式必须满足以下两个条件:
- 字符长度必须至少为 9 个字符
- 必须至少有一个数字和至少一个字母。
因此,像 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) 让表单创建者可以做更多的事情。但令人惊讶的是,即使使用脚本你仍然无法实现你想要的。基于“ 但只有最后一个条件适用。我也在脚本中尝试了 google 支持页面上也有一个类似的问题没有得到解答:
https://support.google.com/docs/thread/15036083?hl=en 最后我找到了“Choice Limit | Form Limit | Choice Remove Removal”,这是一个付费插件,有一个“contains RegEx”特征。我自己没用过,希望对你有帮助。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
,但没有成功。
显然没有简单的解决方案。这是一个考虑到字符串所有可能变化的解决方案。
.*([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