gpt4 book ai didi

java - : a string should not contain any sequence of characters immediately followed by the same sequence? 的正则表达式示例是什么

转载 作者:行者123 更新时间:2023-11-29 07:14:55 24 4
gpt4 key购买 nike

在我的程序中,我有一个正则表达式,它确保输入字符串至少有一个字母和一个数字字符,并且长度在 2 到 10 之间。

Pattern p = Pattern.compile("^(?=.*\\d)(?=.*[A-Za-z])[A-Za-z0-9]{2,10}$");

根据新要求,字符串也不应包含紧跟相同序列的任何字符序列。我搜索了很多但无法弄清楚。你能帮忙吗?或指向任何 URL/文档?


非常感谢您的回复。

要求:字符串不得包含任何紧跟相同序列的字符序列。

我觉得要求不明确。

我不确定“12aardvark”是否有效,因为 -1. 有重复的“a”。与字符串“11abcdefg”相同。2.有重复的“ar”3. 但“ar”后面没有紧跟相同的序列。中间有“dv”。

我认为,字符串“12ardvark”和“12aardvark”不应该通过验证,因为它有重复的字符序列:“ar”,尽管它后面没有紧跟相同的序列。

“fofo123”或“ab1212”肯定不会通过,因为“fo”(仅 2 个字符)后紧跟着相同的序列。

您对需求的假设是什么?

最佳答案

A monolithic regex is not the answer to every string-validation problem.

使用基本的字符串函数和多个更小的正则表达式可读性更高。 (当 length(pwd) 会做同样的事情时,为什么要尝试使用正则表达式检查字符串的长度?)

下面是一些可以很好地转换为 Java 的 Python 代码:

import re
def validate_password(pwd):
# return true if valid or false is invalid.

if ( len(pwd) < 2 or len(pwd) > 10 ):
print "Password %s : Failed length requirement" % pwd
return False
if ( re.search(r"\d", pwd) == None ):
print "Password %s : must contain at least one number" % pwd
return False
if ( re.search(r"[a-zA-Z]", pwd) == None ):
print "Password %s : must contain at least one alphabetical character" % pwd
return False
if ( re.search(r"(...+)\1", pwd) != None ):
print "Password %s : must not contain any repeating substrings of three characters or more" % pwd
return False

print "Password %s is OK" % pwd
return True

test_pwds = [ "1", "123", "aardvark", "12ardvark", "12aardvark", "foofoofoo1" ]

for pwd in test_pwds:
validate_password (pwd)

测试输出:

Password 1 : Failed length requirement
Password 123 : must contain at least one alphabetical character
Password aardvark : must contain at least one number
Password 12ardvark is OK
Password 12aardvark is OK
Password foofoofoo1 : must not contain any repeating substrings of three characters or more

使用一系列小测试而不是一个大测试来验证输入有几个好处:

  1. 更容易理解。
  2. 更容易调试。
  3. 将来更容易维护。 (假设您的老板增加了另一个要求,即密码中必须至少出现两个符号。)
  4. 您可以告诉用户什么条件他们的密码失败,而不是一些通用消息,如“您的密码必须满足giant list of criteria”。

关于java - : a string should not contain any sequence of characters immediately followed by the same sequence? 的正则表达式示例是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com