Regex Python 3.4的输入验证:只能包含

Regex Python 3.4的输入验证:只能包含,regex,validation,python-3.x,Regex,Validation,Python 3.x,我希望允许这些字符[a-z]+\.+[0-9]*\\\\\\\*(必须包含一个或多个小写字母字符(a-z),并且必须包含一个或多个句点()。也可以包含零个或多个数字(0-9)、零个或多个下划线()),但不能包含其他字符 我尝试了多种方法,但都没有成功: import re iStrings = str(input('Enter string? ')) iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings) iiMatch = re.findall

我希望允许这些字符
[a-z]+\.+[0-9]*\\\\\\\*
(必须包含一个或多个小写字母字符(a-z),并且必须包含一个或多个句点()。也可以包含零个或多个数字(0-9)、零个或多个下划线()),但不能包含其他字符

我尝试了多种方法,但都没有成功:

import re
iStrings = str(input('Enter string? '))
iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings)
iiMatch = re.findall(r'[~`!@$%^&*()-+={}\[]|\;:\'"<,>.?/]', iStrings)
iiiMatch = iMatch != iiMatch
if iiiMatch:
    print(':)')
else:
    print(':(')
重新导入
iStrings=str(输入('Enter string?'))
iMatch=re.findall(r'[a-z]+\.+[0-9]*\\\\\\\\\*',iStrings)
iiMatch=re.findall(r'[~`!@$%^&*()-+={}\[]\\\\;:\''''./]',iStrings)
iiMatch=iMatch!=iiMatch
如果iiMatch:
打印(“:)”)
其他:
打印(':(')
另一个例子:

import re
iStrings = str(input('Enter string? '))
iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings) not "[~`!@$%^&*()-+={}\[]|\;:\'"<,>.?/]" in iStrings 
if iMatch:
   print(':)')
else:
   print(':(')
重新导入
iStrings=str(输入('Enter string?'))
iMatch=re.findall(r'[a-z]+\.+[0-9]*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,iStrings)不是iStrings中的“[~`@$%^&*()-+={}\[]\\;:\”?/”
如果iMatch:
打印(“:)”)
其他:
打印(':(')
任何帮助都将不胜感激

编辑:添加了澄清

编辑:有关其他信息:

首先,
[a-z]+
不是“a”字符。
[0-9]*
\\\*

我假设你的意思是允许字母、数字、下划线、点、加号和星号

试试这个:

^[\w*.+]+$
  • \w
    已经匹配了
    [a-z]
    [0-9]
    \u
  • 锚定
    ^
    $
    确保不允许其他内容
  • 从您的问题中,我不清楚您是否希望允许
    +
    字符匹配。如果不允许,请将其从character类中删除:
    ^[\w*]+$
    。同样,如果不需要,请删除
    *
  • 代码:

    if re.search(r"^[\w*.+]+$", subject):
        # Successful match
    else:
        # Match attempt failed
    
    编辑以下评论:

    对于必须包含一个或多个字母、一个或多个点、零个或多个uu、零个或多个数字的字符串,我们需要lookahead来强制执行一个或多个条件。您可以使用以下方法:


    ^(?=.[a-z])(?=.*\.[\w_.]+$

    仅供参考,我在答案中添加了Python代码。要获得更通用的输入验证(此问题是一个简化的示例),请查看一些(众多)密码验证问题和答案:例如@ridgerunner尼斯链接:)@ridgerunner谢谢,我会的,对不起,我不清楚。小写字符
    [a-z]
    一个或多个,一个或多个
    ,零个或多个
    \uuu
    和零个或多个
    [0-9]
    。这是我第一次使用正则表达式,伙计,这很混乱。谢谢。@loki_999谢谢你的反馈。你是说表达式必须包含一个或多个字母、一个或多个点、零个或多个uu、零个或多个数字?那就是一个不同的正则表达式(我们需要使用lookaheads进行验证)@好吧,那没关系,因为我在答案中也加了这个
    if re.search(r"^[\w*.+]+$", subject):
        # Successful match
    else:
        # Match attempt failed