[問題] 用 Javascript 驗證 E-mail 信箱

看板RegExp (正規表示式 Regular Expression)作者時間15年前 (2009/12/11 11:28), 編輯推噓5(503)
留言8則, 4人參與, 最新討論串1/1
想用 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> 雖然大致上都沒問題,如果像這樣 user@server.x 也過不了。 奇怪的是,user@server.xxxxx 還是可以通過驗證。 請問是為什麼呢?應該怎麼寫才正確呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.199.72

12/11 16:15, , 1F
把後面那個.移到[]外面,類似[\w-]+\.[a-z]{2,4}
12/11 16:15, 1F

12/11 16:17, , 2F
在裡面的話,@xxx.xxxxyzzzzz會因為xxx.xxxxyz可匹配[\w-.]+
12/11 16:17, 2F

12/11 16:17, , 3F
而通過
12/11 16:17, 3F
謝謝,不過這樣改的話,會變成 user.name@msa.hinet.net 這類的信箱過不了。

12/12 04:05, , 4F
domain 沒有一個字母結尾的啊
12/12 04:05, 4F
沒錯,所以 .x 結尾的信箱過不了,是我希望的結果。 但是 .xxxxx 結尾的信箱卻過濾不掉。 ※ 編輯: chweng 來自: 140.116.199.72 (12/12 12:25)

12/12 15:05, , 5F
唔~那.. /^[\w+-.]+@[\w-.]+\.[a-z]{2,4}$/ 這樣咧?
12/12 15:05, 5F

12/12 15:07, , 6F
不過 @. 和 .. 還是會通過就是了
12/12 15:07, 6F

12/12 20:44, , 7F
但是像 .museum 這麼長的 TLD 是存在的耶~
12/12 20:44, 7F

01/04 18:16, , 8F
[\w+-.]+@[a-z]+[\.]{1}[a-z]{1,7}[\.]{0,1}[\w]+
01/04 18:16, 8F
文章代碼(AID): #1B8RnlST (RegExp)
文章代碼(AID): #1B8RnlST (RegExp)