【发布时间】:2020-05-22 08:28:11
【问题描述】:
我希望我的聊天机器人的用户在文本框中写下他的名字。
以下类型都可以:
- 拉丁字母:John
- 每个带有非拉丁字符的名称,例如:àaäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇß
- 德语字母:ä,ü,ö,ß Ä, Ü, Ö
- 多个名称,例如:Peter-Alexander
- 没关系,如果用户在他的名字末尾加上一个点:John。
这是不正确的:
- 马克斯!
- 最大123
- 最大 123
- 最大_
- 最大!"§$%&/()
这是我尝试过的:
import re
value='John'
if not re.search(r'\d', value) and not re.search(r"[^a-zA-Z.\-\sÜüßäÄöÖ]", value) and not re.search(r"[.-]\Z", value):
print('name is correct')
else:
print('name is not correct')
【问题讨论】:
-
Max与John有何不同?您还想在最后允许-,对吗?不只是.?John-Pete-Alexander是否允许? -
对不起,我的失误。当然,麦克斯和约翰没有区别。我删除了它!是的,约翰-皮特-亚历山大很好!我的计划实际上是只允许在名称末尾添加一个点
.。但是,如果您认为应该允许使用像!?这样的其他标志,我可以接受 -
好的,看我的回答。你可以在最终的字符类中添加你需要的
?![!?.-]?