我有下面的代码来接受至少 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 .
关于python - 使用正则表达式仅匹配特定的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55297495/