上一个检测邮箱是否合法的例子只能检测到 输入的邮箱中含有“@”和“.”即为合法邮箱,并没有检测到“@”和“.”应出现的位置,下面写个更为完善的。哦,感谢“前端民工”的指正,借用他的话“人生的路就是这样,一程接着一程,短的是旅途,长的是人生”,而码代码的路也是这样,一行接着一行,短的可能是bug,长的也可能是bug。最好的代码永远在下一次优化。 :)
function isEmail(){ var str = "jhhhhhh@gmail.com"; var reg = /^[0-9a-zA-Z_]{5,12}@(163|126|qq|yahoo|gmail|sina).(com|com.cn|cn|la)$/; // 或者 reg = /^w+(-*w*)*@[a-zA-Z0-9]+(.[a-zA-Z]+){1,3}$/
if(str.search(reg) < 0){ console.log('邮箱错误!'); }else{ console.log('邮箱正确!'); } } isEmail();
补充:
/^$/ 这个是个通用的格式; ^ 匹配输入字符串的开始位置;$匹配输入字符串的结束位置; * 匹配前面的子表达式零次或多次; + 匹配前面的子表达式一次或多次; ?匹配前面的子表达式零次或一次。
欢迎指正!
更新于2016.10.9
简单封装一个对象案例
String.prototype.isEmail = function(){ email = this; if (email.indexOf("@")!=-1&&email.indexOf(".")!=-1){ if(email.indexOf("@")<email.lastIndexOf("@")){ alert("邮箱不合法"); }else{ alert("邮箱合法"); } } } var email = "jhhhhhh@gmail.com"; email.isEmail();
补充:
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。如果要检索的字符串值没有出现,则该方法返回 -1。