我需要编写一个带字符串的python函数,并使用REGEX来检查字符串是否包含:
如果存在,则返回true,否则返回false。我对函数很满意,但是正则表达式遇到了麻烦。
到目前为止,我有: [A-Z]+\d{2,}[!@#\$&\*-_\.]{2}
我知道这行不通,因为我对regex不熟悉,所以我真的很困惑。
谢谢你的帮助!
你可以使用
^(?=[^A-Z\r\n]*[A-Z])(?=[^\d\r\n]*\d[^\d\r\n]*\d)(?=.{6,8}$)[A-Z\d]*[!@#$&*_.-][A-Z\d]*[!@#$&*_.-][A-Z\d]*$
请注意\-
在字符类中转义或将其放在开头或结尾。否则它将表示一个范围。
解释
^
字符串开始(?=[^A-Z\r\n]*[A-Z])
积极向前看,断定字符AZ(?=[^\d\r\n]*\d[^\d\r\n]*\d)
正向向前看,断言2位数字(?=.{6,8}$)
正向超前,断言总共6至8个字符[A-Z\d]*[!@#$&*_.-][A-Z\d]*[!@#$&*_.-][A-Z\d]*
匹配2个“特殊”字符$
字符串的结尾(或者,\Z
如果后面没有换行符,请使用)
太棒了!唯一的问题是,如果我在字符串中有任何小写字符,它将不匹配。例如,字符串“ A00!$ a”应该匹配。你知道我能做些什么来解决这个问题吗?
@SegmentationFault可以将az添加到匹配的字符类中,请参阅regex101.com/r/5zbejo/1
完美的作品,谢谢!