[英]Super simple email validation with JavaScript
我正在制作一個非常簡單的電子郵件驗證腳本,基本上只檢查以下內容
我知道還有更多檢查,但我查看了這些正則表達式規則,我的大腦停止了工作。 我想如果我從像這樣的小東西開始,我可能能夠將我的大腦包裹在更復雜的規則上。
目前使用一些 jQuery 我執行以下操作:
var booking_email = $('input[name=booking_email]').val();
if(booking_email == '' || booking_email.indexOf('@') == -1 || booking_email.indexOf('.') == -1) {
// perform my alert
}
到目前為止,這足以阻止 90% 的虛假電子郵件......我只想讓它更有效一些,因為目前我的規則將允許像“@example.com”或“ user@domain
”這樣的電子郵件。 因為它只檢查是否有句號和@ 符號。
其他人的建議應該可以正常工作,但是如果您想保持簡單,請嘗試以下操作:
var booking_email = $('input[name=booking_email]').val();
if( /(.+)@(.+){2,}\.(.+){2,}/.test(booking_email) ){
// valid email
} else {
// invalid email
}
即使您決定使用更健壯的東西,它也應該可以幫助您了解正則表達式有時是多么簡單。 :)
你做的最不可能的貪婪驗證是使用這個正則表達式/^\S+@\S+\.\S+$/
它只會確保地址符合您提到的最基本要求:@ 之前的字符以及域部分中點之前和之后的內容( \S
表示“除空格之外的任何內容”)。 驗證更多可能是錯誤的(您總是有機會將有效電子郵件列入黑名單)。
像這樣使用它:
function maybeValidEmail (email) { return /^\S+@\S+\.\S+$/.test(email); }
嘗試:
function valid_email(email) {
return email.match(/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i);
}
根據這篇文章,這是最好的電子郵件驗證正則表達式。 我建議使用它,除非您的目標非常簡單但不完全兼容。
RegexLib.com ( http://regexlib.com/Search.aspx?k=email ) 有數百個電子郵件驗證例程是有原因的。 我建議您閱讀這篇文章: http ://www.unwrongest.com/blog/email-validation-regular-expressions/ 如果您決定繼續使用正則表達式進行驗證,我最喜歡的測試工具是免費的正則表達式設計器在這里免費: http ://www.radsoftware.com.au/regexdesigner/ ...測試大列表中的所有電子郵件(可免費下載或購買...或使用您自己的當前數據庫)以確保您的正則表達式在您的限制范圍內可以接受。
我會推薦一個基本測試(很多都在 regexlib.com 的頂部......我不認為我經常使用他們的工作),然后是一個需要用戶交互的電子郵件驗證例程。 這是“驗證”電子郵件地址的唯一真正方法。
電子郵件很難測試,但您可以進行一些限制性但簡單的電子郵件驗證。 我自己使用這個,它在確保 95% 是電子郵件地址方面做得相當不錯。
var simpleValidEmail = function( email ) {
return email.length < 256 && /^[^@]+@[^@]{2,}\.[^@]{2,}$/.test(email);
};
我建議將此用於“簡單”驗證。
要了解為什么這很難解決,請參閱: 如何使用正則表達式驗證電子郵件地址?
更新:更正正則表達式
根據Ian Christian Myers在此之前的回復,此答案添加了 + 符號並擴展到 4 個以上字符的 tld
function validateEmail(email) {
const regex = /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,15}$/;
return regex.test(email);
}
<input type="email" name="email" required>
我猜這應該可行。
type = email 將檢查基本驗證, required 將檢查該字段是否為空白。
你可以試試這個:
var booking_email = $('input[name=booking_email]').val();
if(booking_email.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
// valid email
} else {
// not valid
}
如果您只想檢查企業電子郵件,請嘗試以下操作:
<script type="text/javascript">
$(document).ready(function(e){
$('#sendReq').click(function(){
var email = $('#emailAddress').val();
var reg = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)(?!aol.com)(?!abc.com)(?!xyz.com)(?!pqr.com)(?!rediffmail.com)(?!live.com)(?!outlook.com)(?!me.com)(?!msn.com)(?!ymail.com)([\w-]+\.)+[\w-]{2,4})?$/;
if (reg.test(email)){
return 0;
}
else{
alert('Please Enter Business Email Address');
return false;
}
});
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.