簡體   English   中英

正則表達式 - 如何匹配電子郵件地址中的>第一個標簽?

[英]regex - how to match >first tag in email address?

我需要從電子郵件地址中刪除最后一個標簽,如下所示:

foo+bar@baz.com       =>   foo@baz.com
foo+bar+baz@xyz.com   =>   foo+bar@xyz.com
foo@bar.com           =>   foo@bar.com     // no change

這個正則表達式確實有效,但即使它不貪婪,它也會刪除兩個標簽+?

\+{1}(.+?)@{1}

PHP沙箱

我嘗試了負前瞻,但它沒有按預期工作,仍然刪除了兩個標簽:

\+{1}.+(?!\+).+@{1}

regex101.com

您可以使用

\+[^+@]+@

並替換為@

查看正則表達式演示

細節

  • \\+ - 加號
  • [^+@]+ - 除了+@之外的 1 個或多個字符
  • @ - a @ (為了“錨定”搜索,因此,我們需要用這個字符替換)

如果要求只刪除最后一個@之前的+之后的那部分,請使用

(.*)\+[^+@]+(@[^@]*$)

並替換為$1$2 請參閱此正則表達式演示

這里,

  • (.*) - 第 1 組:盡可能多地捕獲任何 0+ 個字符
  • \\+[^+@]+ - 見上面的模式
  • (@[^@]*$) - 第 2 組:一個@ ,然后是除@之外的 0+ 個字符,直到字符串的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM