【问题标题】:Input validation with Python 3.4: can only containPython 3.4 的输入验证:只能包含
【发布时间】:2014-06-08 22:51:08
【问题描述】:

我想允许这些字符[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(':(')

另一个例子:

import re
iStrings = str(input('Enter string? '))
iMatch = re.findall(r'[a-z]+\.+[0-9]*\_*', iStrings) not "[~`!@$%^&*()-+={}\[]|\;:\'"<,>.?/]" in iStrings 
if iMatch:
   print(':)')
else:
   print(':(')

任何帮助将不胜感激。

编辑:添加说明。

编辑:更多信息:https://forums.uberent.com/threads/beta-mod-changes.51520/page-8#post-939265

【问题讨论】:

  • 仅供参考,在答案中添加了 Python 代码。
  • 对于输入验证的更一般化的看法,(这个问题是一个简化的例子),看看一些(许多)密码验证问题和答案:例如regex for password
  • @ridgerunner 不错的链接 :)
  • @ridgerunner 谢谢你,我会的。

标签: regex validation python-3.x


【解决方案1】:
allow these characters [a-z]+\.+[0-9]*\_*

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

我假设您的意思是要允许使用字母、数字、下划线、点、加号和星号。

试试这个:

^[\w*.+]+$
  1. \w 已经匹配 [a-z]、[0-9] 和 _
  2. 锚点^ 和$ 确保不允许其他任何事情。
  3. 根据您的问题,我不清楚您是否要允许 + 字符匹配。如果没有,请将其从字符类中删除:^[\w*.]+$。同样,如果不需要,请将 * 删除。

在代码中:

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

根据您的评论进行编辑:

对于必须包含一个或多个字母、一个或多个点、以及零个或多个 _、以及零个或多个数字的字符串,我们需要前瞻来强制执行 one or more 条件。你可以使用这个:

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

【讨论】:

  • 抱歉,不清楚。小写字符[a-z] 一个或多个、一个或多个.、零个或多个_ 和零多个[0-9]。这是我第一次使用正则表达式,这很混乱。谢谢。
  • @lok​​i_999 感谢您的反馈。您是说表达式必须包含一个或多个字母、一个或多个点、零个或多个 _、以及零个或多个数字?那么这是一个不同的正则表达式^(?=.*[a-z])(?=.*\.)[\w_.]+$(我们需要使用前瞻进行验证)
  • @lok​​i_999 好吧,因为我也将其添加到答案中。 :)
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2013-10-10
  • 2012-04-17
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多