首页 文章

字母,短划线,下划线,数字和空格的正则表达式

提问于
浏览
2

这是我的尝试

def matcher(ex):
    if re.match(r'^[\w|\d][A-Za-z0-9_-]+$', ex):
        print 'yes'

我的目标是仅匹配满足以下所有内容的提交

  • 仅以字母或数字开头,并且

  • 仅允许使用字母,空格,短划线,下划线和数字

  • 所有结束空格都被剥离

在我的正则表达式中, matcher('__') 被认为是有效的 . 如何修改以实现我真正想要的东西?我相信 \w 也包括下划线 . 但 matcher('_') 不匹配......

1 回答

  • 11
    def matcher(ex):
        ex = ex.rstrip()
        if re.match(r'^[a-zA-Z0-9][ A-Za-z0-9_-]*$', ex):
            print 'yes'
    

    原始正则表达式中的问题:

    • | 并不意味着在字符类中交替,它实际上意味着管道字符 .

    • 您使用了 + 作为后续字符,即一个或多个字符,因此像 '_' 这样的单字符字符串将不匹配 .

    • 您在第一个字符中使用了 \w ,它接受了下划线 .

相关问题