有了這個正則表達式我可以很容易地檢查郵件是否有效:電子郵件驗證的JavaScript正則表達式
RegExp(/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/);
然而,這只是爲了這樣的地址返回true:
[email protected]
我也想接受:
*@example.com
我需要對我的RegExp進行哪些更改?
在此先感謝
有了這個正則表達式我可以很容易地檢查郵件是否有效:電子郵件驗證的JavaScript正則表達式
RegExp(/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/);
然而,這只是爲了這樣的地址返回true:
[email protected]
我也想接受:
*@example.com
我需要對我的RegExp進行哪些更改?
在此先感謝
幾件事情:接受*@foo.bar
:
var expression = /^([\w-\.*][email protected]([\w-]+\.)+[\w-]{2,4})?$/;//no need to pass it to the RegExp constructor
但這種表達不接受[email protected]
,但話又說回來,正則表達式和電子郵件是不是所有的太好的朋友。但是,根據你的表現,這裏有一個稍微不那麼不可靠的版本:
var expression = /^[\w-\.\d*][email protected][\w\d]+(\.\w{2,4})$/;
有是驗證所有有效類型的電子郵件地址,在網絡上某處的表達,雖然。看看,看看爲什麼正則表達式驗證幾乎總是要排除有效的輸入或太寬容
要回答你的問題從字面上看,你可以「增強」您正則表達式:
RegExp(/^([\w.*-][email protected]([\w-]+\.)+[\w-]{2,4})?$/);
但是,這是電子郵件驗證一個可怕的正則表達式。正則表達式是錯誤的工具。你爲什麼insist on doing it this way?
我ganan使用正則表達式用於客戶端電子郵件驗證(JS),在服務器端我使用FILTER_VAR和PHP,使用Javascript進行電子郵件驗證的下一步是什麼?爲什麼它很糟糕?可以不接受一些有效的電子郵件地址嗎? – behz4d
This accept [email protected],I guess the /^[\w-\.\d*][email protected][\w\d]+(\.\w{2,4})$/ is better since它不接受[email protected] – behz4d
@ behz4d:你的正則表達式只拒絕該地址,因爲它(正則表達式)包含語法錯誤。 「@」之前的角色類中的短劃線位置錯誤,因此被忽略。因此,它不接受* @之前的任何*短劃線。 –
檢查電子郵件地址並不那麼簡單,參見參考資料。 RFC 822, sec 6.1。
一個好的正則表可以在http://www.regular-expressions.info/email.html找到,描述RFC一致性和實用性之間的權衡。
檢查了這一點:http://www.regular-expressions.info/email.html – Bergi