我有以下代码接受至少3个字符的输入,它应仅包含[a-zA-Z0-9],_,-,.(点)
但是模式不应该只匹配。

像输入可以是--__ abc和----,____,但不能为* ... **

我具有以下模式,但无法正常工作。
有人能帮我吗

     n = input()
     pattern = "^[A-Za-z0-9_-]+[.]*$"
     if match:
         print('input accepted') # exp : ----,____,aaa,000, __ahs--
                                    -,_.as
     else:
         print('input not accepted') # exp : .... (not accepted as
                                       contains only dot(.)

最佳答案

您可以通过将上面代码中的第二行和第三行替换为以下方法来修复当前方法:

if re.search(r'^(?!\.+$)[A-Za-z0-9._-]{2,}$', n.strip()):


n.strip()将从输入中去除所有多余的空白,并且模式将匹配


^-字符串开始
(?!\.+$)-不允许仅点字符串
[A-Za-z0-9._-]{2,}-两个或多个字母,数字,._-
$-字符串结尾。


请参见regex demo

10-04 22:24
查看更多