Python:使用正则表达式验证

2024-10-01 07:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python regular expression来验证变量的值。在

验证规则如下:

  • 该值可以包含a-zA-Z0-9和{}(noblank,no-,no,)中的任意一个
  • 该值可以start与数字(0-9)或字母表(a-z, A-Z)或{}
  • {{cd11>
  • 在中间,值可以包含数字(0-9)或字母(a-z, A-Z)或{}
  • 不得使用任何其他值

目前我正在使用以下代码片段进行验证:

import re
data = "asdsaq2323-asds"
if re.compile("[a-zA-Z0-9*]+").match(data).group() == data:
    print "match"
else:
    print "no match"

我觉得应该有更好的方法来做以上的事情。我要找的东西如下:

^{pr2}$

是否存在这样的内置函数?在


Tags: no代码redata规则match字母数字
3条回答

在正则表达式中,元字符^$分别表示“字符串的开始”和“字符串的结束”;因此,与其查看匹配的内容并将其与整个字符串进行比较,您只需要求正则表达式匹配以开始的整个字符串:

import re
data = "asdsaq2323-asds"
if re.compile("^[a-zA-Z0-9*]+$").match(data):
    print "match"
else:
    print "no match"

另外,由于您只使用一次正则表达式—您编译并立即使用它—您可以使用方便方法re.match将其作为一个步骤来处理:

^{pr2}$

我想你在找

re.match('^[a-zA-Z0-9*]+$',data) and data

额外的and data只是返回数据,但我不确定您为什么需要它。检查重新匹配对None的结果足以检查字符串是否有效。在

要确保整个字符串与您的模式匹配,请在正则表达式中使用字符串开头和结尾锚点。例如:

regex = re.compile(r'\A[a-zA-Z0-9*]+\Z')
if regex.match(data):
    print "match"
else:
    print "no match"

使其成为函数:

^{pr2}$

示例:

>>> regex = re.compile(r'\A[a-zA-Z0-9*]+\Z')
>>> validate_func(regex, 'asdsaq2323-asds')
>>> validate_func(regex, 'asdsaq2323asds')
'asdsaq2323asds'

作为补充说明,我更喜欢\A和{}而不是^和{}对于这样的验证,^和{}的含义可以根据使用的标志而改变,$将在字符串末尾的换行符之前匹配。在

相关问题 更多 >