合法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
怎么查看steam绑定的r星邮箱 1、可以通过登录Rockstar 来获取绑定的电子邮件信息。第一步:在rockstargames中登录自己的socialclub 账号。第二步:登录后点击右上角的头像...
共青团输入错误怎么退出? 你好 ,如果共青团输入错误的话,你可以先退出,然后重新输入你的共青团,然后再进行青年大学习就好了共青团大学系里面的资料填错了要如何才能够重新改正过来? 共青团大学系里面的资料...
原神三无邮箱号会被找回吗 如果不是自己注册的,而是在一些渠道购买的初始号,是有可能被找回的。找回密码方式:可通过手机验证、邮箱验证、安全手机验证三种方式进行找回:1、绑定手机验证若账号已经有绑定手机,...
黑客用来接受数据的邮箱叫什么呀?怎么配置呢?c语言是什么? 黑客用来接受数据的邮箱叫什么这句话很难明白......一般黑客是用木马盗号.邮箱就是平时用的邮箱啊...没有什么区别的.至于怎么配置.首先要...
为什么我的企业邮箱总是收到陌生邮件?企业邮箱这种垃圾邮件怎么处理? 企业邮箱系统一般有严格的安全措施,正常情况下垃圾邮件会被系统拦截的,通过反垃圾邮件日志查询可以看到拦截记录! 可以让邮箱管理员看下是...
QQ邮箱为什么发送不出去 原因 如何解决 经过本人发现QQ英文邮箱有弊端,发现发送到同样一个邮件地址,英文邮箱会发送失败,改成号码邮箱就能成功发送了。下面给大家整理了相关的内容分享,感兴趣的小伙伴不要...