代码之家  ›  专栏  ›  技术社区  ›  Stanleyrr

如何检查Python字符串是否包含字母、数字和''uu'符号,但不包含其他内容?

  •  -1
  • Stanleyrr  · 技术社区  · 4 年前

    我看过很多网站展示了如何检查字符串是否包含字母或数字,但不能同时包含字母和数字。本网站 https://www.geeksforgeeks.org/python-program-to-check-if-a-string-has-at-least-one-letter-and-one-number/

    2 回复  |  直到 4 年前
        1
  •  1
  •   Nanthakumar J J    4 年前

    不带正则表达式的解决方案:)

    s=input()
    print(not ((all(i.isdigit() for i in s) or (all(i.isalpha() for i in s)) or (any(not i.isalnum() for i in s)))))
    
        2
  •  1
  •   Or Y    4 年前

    import re
    
    re.match("^(?=.*[wa-zA-Z])(?=.*[\d])[\w]+$", "A530") # Will return an re.Match object
    re.match("^(?=.*[wa-zA-Z])(?=.*[\d])[\w]+$", "A339*加>") # Will return None
    re.match("^(?=.*[wa-zA-Z])(?=.*[\d])[\w]+$", "AAAA") # Will return None
    re.match("^(?=.*[wa-zA-Z])(?=.*[\d])[\w]+$", "0000") # Will return None
    

        3
  •  0
  •   Aaj Kaal    4 年前

    如果你不喜欢正则表达式,那么这就是方法。

    代码:

    import string
    
    lst = ["A530", "D592", "ABCDE", "000326", "A339*加>"]
    str_ascii_digits = string.ascii_letters + string.digits
    passed = [s for s in lst if 
                any(ch in string.ascii_letters for ch in s ) and 
                any(ch in string.digits for ch in s) and 
                all((ch in str_ascii_digits for ch in s))]
    print(passed)
    

    ['A530', 'D592']