精華區beta RegExp 關於我們 聯絡資訊
想用 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