dah*_*boy 2 python regex python-3.x
我正在尝试在以下条件下验证姓名
代码工作:
def check(word):
matchObj = re.match( r'^(([^ ]?)(^[a-zA-Z]).*([a-zA-Z]$)([^ ]?))$', word, re.M|re.I)
if matchObj:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
我能够做到第一点,但无法理解如何做到第二点。关于第三点,我{5,20}在最后$一个正则表达式之前尝试过,但是它不起作用。
从上面的正则表达式中,我要验证-杰克逊-杰克逊博士
并使以下内容无效:-杰克逊博士#(。)后两个空格-杰克逊博士#包含两个点
希望以上你能解决我的问题。
您可以将此正则表达式与前瞻性断言一起使用:
(?mi)^[a-z](?!(?:.*\.){2})(?!(?:.* ){2})(?!.*\.[a-z])[a-z. ]{3,18}[a-z]$
Run Code Online (Sandbox Code Playgroud)
正则表达式详细信息:
(?mi):启用MULTILINE和IGNORE_CASE模式^:开始[a-z]:开头匹配一个字母(?!(?:.*\.){2}):负向前瞻性断言我们只有一个点(?!(?:.* ){2}):否定前瞻断言我们没有太多空间(?!.*\.[a-z]):负前瞻性断言,如果我们有一个点,则其后不跟字母[a-z. ]{3,18}:匹配3至18个给定字符,使总长度为5至20[a-z]:在结尾前匹配一个字母$: 结束| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |