2013-03-11 69 views
0

需要正則表達式將檢測[email protected]正則表達式來之前@檢測的電子郵件地址段

([a-z0-9A-Z])@domain.tld

有效檢測不到:[email protected]

無效:[email protected]

我認識一個週期合法地在電子郵件地址@之前,但需要檢測該條件。

+0

[a-z0-9A-Z] + \。[a-z0-9A-Z] + @ domain.tld – user1937198 2013-03-11 22:05:08

+4

測試* invalid * emails by your req:'\ .. * @' – 2013-03-11 22:12:35

+0

還有什麼我們可以爲你做的嗎? [你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Herbert 2013-03-11 22:12:37

回答

0

\.(?=.*@)應該這樣做。

+0

我很好奇爲什麼你會在這裏使用lookahead。 – jrajav 2013-03-11 22:07:39

+0

我用前瞻來捕捉「。」實例出現在「@」之前,但實際上在我的匹配中沒有包含「@」 – Daedalus 2013-03-11 22:08:24

+0

這個正則表達式只用於檢測真/假匹配,據我所知,所以沒有必要排除'@' – jrajav 2013-03-11 22:10:34

2

假設你已經確認這是一個正確的郵箱地址:

\..*@

這意味着:一個.,那麼的0個或更多字符序列,然後@

+0

那裏你去:)沒有滾動像@sputnik答案是*有點長* – 2013-03-11 22:16:58

1

你不需要正則表達式,只需比較期間對at符號的位置:

// assuming there's already an `@` in $email 
if (($p = strpos($email, '.')) !== false && $p < strpos($email, '@')) { 
    echo 'invalid'; 
} 

如果電子郵件地址中沒有@,則不會打印'invalid',因爲任何整數都不會嚴格小於false

相關問題