Validate name using Python regex
如果名称有效,我想返回true。名称可以包含:
如。
John Smith 为真John 为真John 为真John Sm1th 为假John $mith =假J0hn =假John Smith =false(名称之间有两个空格)
这是到目前为止我的代码。它失败了一些测试用例。
1 2 3 4 5 6 | import re if re.findall('[A-Za-z]{2,25}\s[A-Za-z]{2,25}', string): print("true") else: print("false") |
要匹配一个或两个单词,您需要使名字或姓氏可选,还需要锚定以确保不部分匹配,或者使用
1 2 3 4 5 | lst = ['John Smith', 'John', 'JoHn', 'John Sm1th', 'John $mith', 'J0hn', 'John Smith'] import re [re.fullmatch('[A-Za-z]{2,25}( [A-Za-z]{2,25})?', x) for x in lst] # [<_sre.SRE_Match object; span=(0, 10), match='John Smith'>, <_sre.SRE_Match object; span=(0, 4), match='John'>, <_sre.SRE_Match object; span=(0, 4), match='JoHn'>, None, None, None, None] |
将结果转换为bool:
1 2 | [bool(re.fullmatch('[A-Za-z]{2,25}( [A-Za-z]{2,25})?', x)) for x in lst] # [True, True, True, False, False, False, False] |