2017-03-04 72 views
-3

所以我有這樣的正則表達式匹配任何電子郵件地址,我需要把它擴大到包括以下內容,擴展Perl正則表達式以考慮更多字符?

:或;在電子郵件之後,隨後是任何可能類型的14個字符。

這是我的表達,因爲它現在是:

[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,} 

而且我不知道如何處理這一點,任何人都可以幫忙嗎?

我的想法做類似的:

[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,}+{:;}+{14*} 

但它似乎沒有工作

+0

使用''[']',你可以組成一個角色類。不用'{...}'。使用'{number}',您可以指定左側模式重複的確切數量。試試'[A-Z0-9 ._%+ - ] + @ [A-Z0-9 .-] + \\。[A-Z] {2,} [:;]。{14}'。如果你需要匹配整個字符串,可能會添加錨點。如果你在使用正則表達式模式的地方提供了更多的代碼會更好。 –

+0

Oh so呃[A-Z0-9 ._%+ - ] + @ [A-Z0-9 .-] + \\。[A-Z] {2,} + [:;] + [14 *]? – Annabelle

+1

你的正則表達式排除了許多有效的電子郵件地址。您應該使用類似[電子郵件::有效](https://metacpan.org/pod/Email::Valid)的內容。 – ThisSuitIsBlackNot

回答

1

你可以這樣做:

\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,}\b(?:[;:][\s\S]{0,14})? 

Demo

注意任何可能類型的14個字符很模糊。這包括\0\n[\s\S]的構造匹配'任何可能的字符',因此澄清如果你的意思是不同的。

+0

這意味着任何正常的字符,文本明智,如A-ZA-Z,符號,數字本質上是 – Annabelle

+0

@Link:那麼空間呢? – dawg