问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP高手进来看下,帮忙写个判断邮箱的程序吧

发布网友 发布时间:2022-04-07 08:28

我来回答

2个回答

热心网友 时间:2022-04-07 09:57

你的代码的确是有点长,我眼睛都快看花了。在此只在你的代码中只取了一部分,并且原封未动。几乎花了我两个小时去搞代码测试、写帖子。鉴于你是初学者,我就慢慢的讲,注意听了。
判断一个邮件,无非判断两件事,一是判断用户有没有输入邮件地址,而是在用户输入了邮件地址的情况下判断输入的地址是否符合“username@domain(用户名@域名)”的格式。
在这里,我用JavaScript就实现这个判断,不适用PHP传来传去。
要使用JavaScript进行判断,就不得不提到正则表达式了,正则表达式专门是用来进行判断的。那么就了解一下正则表达式。
正则表达式的类型有好几种,实现的方法也有两三种,我就讲最基本的一个类:字符类。
字符                             匹配
_________________________________________________________________
[...]                            位于括号之内的任意字符
[^...]                           不在括号之中的任意字符
.                                除了换行符之外的任意字符,等价于[^\n]
\w                               任何单字字符, 等价于[a-zA-Z0-9]
\W                             任何非单字字符,等价于[^a-zA-Z0-9]
\s                               任何空白符,等价于[\t \n \r \f \v]
\S                               任何非空白符,等价于[^\t \n \r \f \v]
\d                               任何数字,等价于[0-9]
\D                               除了数字之外的任何字符,等价于[^0-9]
[\b]                             一个退格直接量(特例)
________________________________________________________________

以上就是正则表达式中字符类的精髓,一会我们就要用到。
再来分析一下邮件地址的组成:
^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$

稍作解释:
^:匹配开始
([a-z0-9A-Z]+[-|\.]?)+:数字或字母>1位 + “-”或“.”,以上组合重复1次以上
[a-z0-9A-Z]:用户名以数字或字母结尾
@:匹配<@>
(
[a-z0-9A-Z]+:匹配多位数字或字母
(-[a-z0-9A-Z]+)?:匹配 -加多位数字或字母 0次或1次
\.:匹配<.>
)+:匹配括号中内容多次
[a-zA-Z]{2,}:匹配字母2次以上
$:匹配结尾

或使用下面表达式也可达到判断的目的:

/[a-zA-Z_0-9]{1,}[@][a-zA-Z_0-9.]{1,}(([.][Cc]{1}[Oo]{1}[Mm]{1})|([.][Nn]{1}[Ee]{1}[Tt]{1})|([.][Oo]{1}[Rr]{1}[Gg]{1})|([.][Mm]{1}[Oo]{1}[Bb]{1}[Ii]{1})|([.][MM]{1}[Ee]{1})|([.][Cc]{1}[Cc]{1})|([.][Bb]{1}[Ii]{1}[Zz]{1})|([.][Tt]{1}[Vv]{1})|([.][Hh]{1}[Kk]{1})|([.][Ii]{1}[Nn]{1}[Ff]{1}[Oo]{1})){1,2}([.][Cc]{1}[Nn]{1}){0,1}$/

进本原理讲了,现在就来看具体的代码了。我都做了详细的注释,相信很容易看懂。

<SCRIPT language="JavaScript">
/* 定义获得表单对象的值的方法 */
function get_obj(obj)
{
return document.getElementById(obj);
}

function post()
{
/* 检查是否输入了邮件地址 */
if(document.getElementById("mail")!=null&&get_obj('mail').value=='')
{
alert("邮件地址不能为空!");
get_obj('mail').focus();
return false;
}

/* 定义正则表达式 */
/* 当用户输入的地址与表达式匹配时,返回true */
/* 否则返回false,同时弹出警告框,文本框获取焦点 */
var pattern = /^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/;
if(!pattern.test(get_obj('mail').value))
{
alert("请填写正确的邮件格式!");
get_obj('mail').focus();
return false;
}

}
</SCRIPT>

/* 在表单(form)的属性中加入 onSubmit="return post()" */
/* post()即为构造的一个检查函数,单击提交按钮就会触发函数post() */
<form name="form1" method="post" action="post.php" onSubmit="return post()">
<table width="100%" border="1" align="center" bordercolor="#ECE9D8" bgcolor="#999999">
<tr align="center">
<td>邮箱:</td>
<td><input type="text" name="mail"></td>
</tr>
<tr align="center">
<td><input name="Submit" type="reset" onClick="MM_goToURL('parent','index.php');return document.MM_returnValue" value="返回"></td>
<input type="hidden" name="action" value="bookinfo">
<td><input type="submit" name="Submit2" value="提交"></td>
</tr>
</form>

以上代码已经经过我的测试,没有问题,绝对能实现对邮件地址的判断。
如果想了解更多,可以到我的网站上来交流。网址
http://www.sunchis.com/html/dev/php/

热心网友 时间:2022-04-07 11:15

不就是判断邮箱格式嘛,给你个函数,接受页面传过来的邮箱的字段
function isemail($email) {
return strlen($email) > 8 && preg_match("/^[-_+.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+([a-z]{2,4})|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i", $email);
}
使用方法
if(!isemail($_POST['email'])) {
echo "8嘎!邮箱格式不正确!!死啦死啦地!";
exit();
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何设置好听 起个漂亮的格式是什么? 改成什么比较好听? 好听的大全 ID怎么取好听? 简单有创意的id有哪些? 2020最火的id 有什么软件可以批量删除自己在微信发过的朋友圈 要给微信注册个,请问什么字母和数字组合好呢?前面一个字母也可以,主要一串数字要好听有意义点_百度问一问 要给微信注册个,请问什么字母和数字组合好呢?前面一个字母也可以,主要一串数字要好听有意义点_百度问一问 改什么好呢? 要给微信注册个,请问什么字母和数字组合好呢?前面一个字母也可以,主要一串数字要好听有意义点 用什么数字最好最有意义? 2020独特的数字字母有哪些? 好听的id 2020独特的id有哪些? 好听又好记的 有意义的ID有哪些? 好听的id 360安全浏览器工具-internet选项? 线雕后如果碰到面部出现鼓包硬结应该怎么办? 做了线雕多久恢复自然..已经半年了.还肿着..脸上的线也都断了 眼窝底下还肿着都没卧蚕了 ppdo线雕后如何判断线断了?线雕提升多久效果最好?线雕后第几天最肿? 脸部线雕线才做了20天左右断了跑嘴角下面去了怎么办 银行什么时候开始允许异地存取款的 银行异地存取款开通年份 90年代银行不能异地存取款 异地存取款的异地取款 同一家银行在异地存取款的问题 何为异地存取款? 中国邮政储蓄是不是全国联网? 银行(同行)异地存取款什么时候开始免手续 90年建行异地存取款和转账的问题 异地存取款的异地的具体概念是怎样的,什么是异地 有关银行异地存取款的问题,请达人解答 求红楼梦读后感 1500字左右 还有文化苦旅的 也是1500字 速求 跪求《红楼梦》读后感1500字和《高老头》读后感1000字,求原创 Ios15QQ语音模式只能一种模式苹果13qq语音模式只可以标准模式吗,其他选项不能选_百度问一问 苹果13,下拉有麦克风模式,这个是什么情况下拉才会有这个选项,一般下拉... 苹果宽谱模式要更新到那个系统才有