作者chweng ()
看板RegExp
標題[問題] 用 Javascript 驗證 E-mail 信箱
時間Fri Dec 11 11:28:44 2009
想用 Javascript 的 RegExp 來驗證 E-mail 信箱,目前是這樣寫:
<script type="text/javascript"><!--
function check(mail) {
var filter = /^[\w+-.]+@[\w-.]+[a-z]{2,4}$/;
(filter.test(mail)) ? alert('信箱正確') : alert('信箱錯誤');
}
--></script>
<input id="mail" type="text" />
<button onclick="check(document.getElementById('mail').value)">驗證</button>
雖然大致上都沒問題,如果像這樣
[email protected] 也過不了。
奇怪的是,
[email protected] 還是可以通過驗證。
請問是為什麼呢?應該怎麼寫才正確呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.199.72
推 No:把後面那個.移到[]外面,類似[\w-]+\.[a-z]{2,4} 12/11 16:15
→ No:在裡面的話,@xxx.xxxxyzzzzz會因為xxx.xxxxyz可匹配[\w-.]+ 12/11 16:17
→ No:而通過 12/11 16:17
謝謝,不過這樣改的話,會變成
[email protected] 這類的信箱過不了。
推 godfat:domain 沒有一個字母結尾的啊 12/12 04:05
沒錯,所以 .x 結尾的信箱過不了,是我希望的結果。
但是 .xxxxx 結尾的信箱卻過濾不掉。
※ 編輯: chweng 來自: 140.116.199.72 (12/12 12:25)
推 No:唔~那.. /^[\w+-.]+@[\w-.]+\.[a-z]{2,4}$/ 這樣咧? 12/12 15:05
→ No:不過 @. 和 .. 還是會通過就是了 12/12 15:07
推 bcse:但是像 .museum 這麼長的 TLD 是存在的耶~ 12/12 20:44