亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正則表達式驗證電子郵件

使用正則表達式驗證電子郵件

守著星空守著你 2023-03-08 10:43:29
我有一個電子郵件驗證正則表達式。我想要實現的是,如果任何電子郵件與正則表達式模式不匹配,我只想顯示那些與正則表達式匹配的字符并刪除不匹配的字符。pattern=r'(^a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'例如:如果我的驗證失敗是因為存在“'”和“?” 在電子郵件中,那么我建議的電子郵件應該包含除這兩個字符之外的所有字符。如果輸入與模式不匹配,則:input="t'[email protected]"    expected output = "[email protected]"我怎樣才能做到這一點?目前我正在使用,z=list(input)sp=[]for j in range(len(z)):    result=re.findall(pattern,z[j])    if len(result)!=0:        sp.append(result[0])output=''.join(sp)但是,這給了我一個空白輸出。除此之外,這種方法的另一個問題是,如果電子郵件輸入有 2'@',它不會檢測到異常誰能建議在這里進行的正確方法是什么?
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

如果您假設字符串中至少有一個并且在它之后至少有一個,那么在您的主要驗證正則表達式失敗時,您可以捕獲電子郵件的三個部分,并從中刪除所有不需要的字符并連接回一個“干凈的@” .“ 電子郵件:


import re

pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$'

text = "t'[email protected]"

def repl(x):

    return "{}@{}.{}".format(re.sub(r'[^a-zA-Z0-9_.+-]+', '', x.group(1)),

        re.sub(r'[^a-zA-Z0-9.-]+', '', x.group(2)),

        re.sub(r'[^a-zA-Z0-9.-]+', '', x.group(3)))


if re.fullmatch(pattern, text):

    print("Valid email: {}".format(text))

else:

    email = re.sub(r"(.*)@(.*)\.(.*)", repl, text)

    print("Filtered email: {}".format(email))

查看Python 演示,輸出為Filtered email: [email protected].


還有另一種清理部分的方法@:拆分.并刪除所有字符[^a-zA-Z0-9-]+中匹配的所有字符,然后將它們連接回去:


def repl(x):

    return "{}@{}".format(re.sub(r'[^a-zA-Z0-9_.+-]+', '', x.group(1)),

        ".".join([re.sub(r'[^a-zA-Z0-9-]+', '', y) for y in x.group(2).split('.')]) )

請參閱此 Python 演示



查看完整回答
反對 回復 2023-03-08
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號