导航:首页 > 编程语言 > java126邮箱真实性验证代码

java126邮箱真实性验证代码

发布时间:2024-12-07 22:05:28

❶ 利用java的字符串处理技术,编写一个验证Email地址合法性的程序

实现原理,实际上就是输入一个字符串,之后通过正则表达式验证此字符串是否符合邮箱的格式规范,通过以下工具类即可:

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassRegisterCheck{
/**
*验证输入的邮箱格式是否符合
*@paramemail
*@return是否合法
*/
(Stringemail)
{
booleantag=true;
finalStringpattern1="^([a-z0-9A-Z]+[-|//.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?//.)+[a-zA-Z]{2,}$";
finalPatternpattern=Pattern.compile(pattern1);
finalMatchermat=pattern.matcher(email);
if(!mat.find()){
tag=false;
}
returntag;
}
}

❷ java :从控制台输入一个字符串,验证是不是邮箱实例一个

楼主你没说清楚合法邮箱的规则呀。下面我自定了一个合法邮箱规则,希望能帮助楼主理解。
代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

System.out.println("请输入一个邮箱地址:");
String mail = sc.nextLine();

/*
设定邮箱地址的合法规则,合法邮箱地址要求如下:
(1)字符必须是英文或数字开始
(2)必须包含一个@
(3)@符号在. 符号前面
(4)以英文或数字结尾

*/
//设置一个正则表达式
String reg = "[\\w]+@[\\w]+.[\\w]+";

//告知此字符串是否匹配给定的正则表达式。
if(mail.matches(reg)) {
System.out.println("邮箱地址合法!");
}
else {
System.out.println("邮箱地址不合法!");
}

}
}

这里主要是采用正则表达式的方式。关于正则表达式,楼主可以查看Pattern类和Matcher类。楼主可以可以到网上查看下相关资料。很快就能理解了。

这里解释下上面的正则表达式String reg = "[\\w]+@[\\w]+.[\\w]+";
\w 表示单词字符:[a-zA-Z_0-9],上面是两个反斜杆是因为反斜杆是转义字符
+号表示:出现一次或多次 ,所以[\\w]+意思就是一到多个单词字符(英文或数字)
@ :直接表示@字符
.:表示点字符
综上所述。
String reg = "[\\w]+@[\\w]+.[\\w]+";的意思就是 :一到多个字符 + @ + 一到多个字符 + 点 + 一到多个字符。
正则表达式使用的好。可以解决很多问题。希望楼主能学好~~

❸ java如何验证一个email地址是否真实有效。

首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:

publicstaticbooleancheckEmail(Stringemail){
if(!email.matches("[\w\.\-]+@([\w\-]+\.)+[\w\-]+")){
returnfalse;
}

Stringhost="";
StringhostName=email.split("@")[1];
Record[]result=null;
SMTPClientclient=newSMTPClient();

try{
//查找MX记录
Lookuplookup=newLookup(hostName,Type.MX);
lookup.run();
if(lookup.getResult()!=Lookup.SUCCESSFUL){
returnfalse;
}else{
result=lookup.getAnswers();
}

//连接到邮箱服务器
for(inti=0;i<result.length;i++){
host=result[i].getAdditionalName().toString();
client.connect(host);
if(!SMTPReply.isPositiveCompletion(client.getReplyCode())){
client.disconnect();
continue;
}else{
break;
}
}

//以下2项自己填写快速的,有效的邮箱
client.login("163.com");
client.setSender("[email protected]");
client.addRecipient(email);
if(250==client.getReplyCode()){
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
client.disconnect();
}catch(IOExceptione){
}
}
returnfalse;
}

需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar

❹ 验证邮件输入地址是否有效的 代码

public class Test{
public static void main(String[] args){
Test t = new Test();
String email = "[email protected]" ;
boolean isEmail = t.isEmail(email);
if(isEmail){
System.out.println(email +" is a right email!!!");
}else{
System.out.println("error");
}
}
public boolean isEmail(String email){
//正则表达式
/*
String regex = "^[A-Za-z]{1,40}@[A-Za-z0-9]{1,40}\\.[A-Za-z]{2,3}$";
return email.matches(regex);
*/

//不适用正则
if(email==null||"".equals(email)) return false ;
if(!containsOneword('@',email)||!containsOneWord('.',email)) return false;
String prefix = email.substring(0,email.indexOf("@"));
String middle = email.substring(email.indexOf("@")+1,email.indexOf("."));
String subfix = email.substring(email.indexOf(".")+1);
System.out.println("prefix="+prefix +" middle="+middle+" subfix="+subfix);

if(prefix==null||prefix.length()>40||prefix.length()==0) return false ;
if(!isAllWords(prefix)) return false ;
if(middle==null||middle.length()>40||middle.length()==0) return false ;
if(!isAllWordsAndNo(middle)) return false ;
if(subfix==null||subfix.length()>3||subfix.length()<2) return false ;
if(!isAllWords(subfix)) return false ;
return true ;
}
//判断字符串只包含指定的一个字符c
private boolean containsOneWord(char c , String word){
char[] array = word.toCharArray();
int count = 0 ;
for(Character ch : array){
if(c == ch) {
count++;
}
}
return count==1 ;
}
//检查一个字符串是否全部是字母
private boolean isAllWords(String prefix){
char[] array = prefix.toCharArray();
for(Character ch : array){
if(ch<'A' || ch>'z' || (ch<'a' && ch>'Z')) return false ;
}
return true;
}
//检查一个字符串是否包含字母和数字
private boolean isAllWordsAndNo(String middle){
char[] array = middle.toCharArray();
for(Character ch : array){
if(ch<'0' || ch > 'z') return false ;
else if(ch >'9' && ch <'A') return false ;
else if(ch >'Z' && ch <'a') return false ;
}
return true ;
}
}

追问:
能不能说下你的想法 详细点最好

追答:
JAVA有一个特性 ,封装!所以首先写代码,尽可能考虑到代码的重用性。
所有首先想到封装 方法
针对邮箱的验证,技术可谓很成熟了,首先,正则表达式是处理字符串的一个很强大的工具,
所以第一个想到的应该是如何用正则表达式进行处理
这个需要你去掌握最基本的正则表达式的写法了!!!

String是Java中最常用的一个类,所以String类中的所有方法,建议楼主最后都掌握。很重要的!

说下思想吧:
一个邮箱,按照你的要求,首先我封装了一个方法,这个方法用来判断是否是合法的邮箱。
当然参数就是1个字符串了
1 邮箱有一个@和. 组成 :会考虑到使用 contains,但是这个方法不能保证重复,只是判断有无,所以不适合。 然后是 indexOf 和lastIndexOf 这两个方法分别返回首次出现的位置和最后一次出现的位置 ,如果两个值相同,说明只有一个字符(昨晚手动写的代码,忘记了lastIndexOf ),
另一种更原始的方法,就是我写的containsOneWord 方法,需要toCharArray, 用遍历每一个字符来比较(推荐使用楼下的 indexOf和lastIndexOf )

2 邮箱 @ 前 @后。前 。后 都有具体的要求 。 所以拆分字符串 substring 和indexOf 配合使用,当然String类还有一个专门处理拆分字符串的类,不过那个类稍微有点复杂 好像是 StringToken什么吧,忘记了,用过正则后再没用过了,可以说被正则完全取代了。

3 @前1-40字符,并全是 字母: String 有返回长度的方法 length , 关键是如何判断 一段字符串全是字母了。而这个需求同样是公用的,可以封装成函数 。 所以isAllWords 方法就用来处理一个字符串是否全部都是字母组成
字母无非就是 a-z 和A-Z 逻辑判断下。
这里需要稍微了解点 ASCII 知道 a>z>A>Z >9>0
4 @后 等原理基本差不多了!
总之一句话送给楼主: 把String类的所有方法都掌握,有时间学习下正则表达式,字符串是最常用的一种对象,对他的操作很重要,掌握了字符串的处理,一般情况下问题都很好解决了!

❺ 如何用java检验电子邮箱格式的合法性要用到String的方法来判断

||自己写逻辑验证的方式可以做到。我写了下面的:

public static boolean validateEmail(String email) {
boolean flag = false;
int pos = email.indexOf("@");
if (pos == -1 || pos == 0 || pos == email.length() - 1) {
return false;
}
String[] strings = email.split("@");
if (strings.length != 2) {// 如果邮箱不是xxx@xxx格式
return false;
}
CharSequence cs = strings[0];
for (int i = 0; i < cs.length(); i++) {
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}
pos = strings[1].indexOf(".");// 如果@后面没有.,则是错误的邮箱。
if (pos == -1 || pos == 0 || pos == email.length() - 1) {
return false;
}
strings = strings[1].split(".");
for (int j = 0; j < strings.length; j++) {
cs = strings[j];
if (cs.length() == 0) {
return false;
}
for (int i = 0; i < cs.length(); i++) {//如果保护不规则的字符,表示错误
char c = cs.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c)) {
return false;
}
}

}
return true;
}

这个效率也不会差很多,不过我推荐matches方法,经过测试的,matches匹配方式运行10000次的时间比上面的时间少了20毫秒。

阅读全文

与java126邮箱真实性验证代码相关的资料

热点内容
哪些地方网络信号更好些 浏览:753
jar反编辑工具 浏览:614
描述数据波动大小有哪些 浏览:584
u盘exfat可复制4g以上的文件吗 浏览:667
a4大小的文件过塑多少钱 浏览:26
畅天游2app在哪里下载 浏览:844
微信看文字的图片 浏览:298
将文件直接粘入word 浏览:134
VIP解析APP有哪些 浏览:463
怎样彻底卸载cad文件 浏览:829
iphone4港版 浏览:624
怎么用命令打开程序错误 浏览:665
iphone6怎么改控制中心 浏览:808
ns错误代码 浏览:653
iphone4s如何取消软件更新提示 浏览:538
jsp打印换行 浏览:662
哪个软件可以编程手机软件 浏览:554
如东如何学数控编程培训 浏览:5
微信h5页面怎么修改 浏览:931
手机怎么无法打开视频文件夹 浏览:840

友情链接