合法E-mail地址:
1. 必须包含一个并且只有一个符号“@”
2. 第一个字符不得是“@”或者“.”
3. 不允许出现“@.”或者.@
4. 结尾不得是字符“@”或者“.”
5. 允许“@”前的字符中出现“+”
6. 不允许“+”在最前面,或者“+@”
正则表达式如下:
-----------------------------------------------------------------------
^(\w+((-\w+)|(\.\w+))*)\+\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$
-----------------------------------------------------------------------
字符描述:
^ :匹配输入的开始位置。
\:将下一个字符标记为特殊字符或字面值。
* :匹配前一个字符零次或几次。
+ :匹配前一个字符一次或多次。
(pattern) 与模式匹配并记住匹配。
x|y:匹配 x 或 y。
[a-z] :表示某个范围内的字符。与指定区间内的任何字符匹配。
\w :与任何单词字符匹配,包括下划线。
$ :匹配输入的结尾。
自己写逻辑验证的方式可以做到。我写了下面的:
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毫秒。
自定了一个合法邮箱规则,希望能帮助理解。代码如下: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]+";的意思就是 :一到多个字符 + @ + 一到多个字符 + 点 + 一到多个字符。正则表达式使用的好。
合法E-mail地址: 1. 必须包含一个并且只有一个符号“@” 2. 第一个字符不得是“@”或者“.” 3. 不允许出现“@.”或者.@ 4. 结尾不得是字符“@”或者“.” 5. 允许“@”前的字符中出现“+” 6. 不允许“+”在最前面,或者“+@”
1、打开email,在主函数中书写这条语句即可输出,输出的内容要用双引号引起来。
2、接着运行java程序,然后就会直接在控制台打印我们的输出的电子邮箱的登陆名,域名,主机名内容。
3、java获取从键盘的内容则要导入一个类。
4、写获取输入的代码。
5、运行java程序,看到有提示输入,使用键盘向控制台里面输入内容。即可。
import org.apache.log4j.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
public static void main(String[] args) {
if(Resource.isEmail("1212@ss.cn")){
System.out.println("1212@ss.cn这个邮箱是合法的!");
}else{
System.out.println("1212@ss.cn这个邮箱是非法的!");
}
}
}
class Resource {
private static final Logger logger = Logger.getLogger(Resource.class);
public static boolean isEmail(String email){
String str="^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-Za-z]{2,3}([\\.][A-Za-z]{2})?$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);
logger.info(m.matches()+"---");
return m.matches();
}
}
这里要用到一个jar包,我用的是log4j-1.2.17.jar
电子邮箱地址都写什么格式? 电子邮件地址的格式为:user@mail.server.name,其中 user 是收件人的用户名。mail.server.name是收件人的电子邮件服务器名,它还可以是域...
丝科慕为什么只面向年轻人,老年人不可以用吗? 不是可不可以用的问题。面向年轻人主要有如下原因,首先从需求上,脱发是形象问题,对于形象的影响,年轻人的需求肯定是要高于老年人的。因为面临就业、择偶、社交等...
青海省民和县马营镇有几个农业农村局 有3个,因为根据官方的说明可以知道,青海省民和县马营镇有3个农业农村局,所以有3个。民和县到马营镇有多少公里怎么走 驾车路线:全程约70.9公里起点:青海省民和县邮...
电子邮箱的格式是什么 电子邮箱格式通常为username@domain.com。其中username为用户名;(自己的ID号);中间是一个邮箱的标识;domain为域名(电子邮局的名称)。例如:QQ邮...
请问电子邮箱是在数字后面加什么字母 国内常用邮箱:@126.com@sina.com@tom.com@qq.com@chinaren.com首先,邮箱有固定的通用格式。即 user@host.do...
手机qq邮箱怎么删除账号 进入邮箱界面 点击右上角的"+"号 弹出来的几个选项中有一个"设置" 点击进入你要删除的帐户就可以看到删除键了怎样删除QQ邮箱默认发信账号? 删除QQ邮箱默认发信账号方法 1...