黑马程序员技术交流社区
标题:
正则表达式的学习
[打印本页]
作者:
张yy
时间:
2013-7-16 03:00
标题:
正则表达式的学习
本帖最后由 张yy 于 2013-7-16 18:32 编辑
通常在注册账号的时候会先行判断邮箱格式的合法性于是试着写了个简单的判断
例如:
public class Judge {
/**
* @param args
*/
public static boolean IsEmail(String str){
//定义要匹配的E_mail地址的正则表达式
String regex = "\\w+@\\w+(\\.\\w{1})*\\.com";
return str.matches(regex);
}
public static void main(String[] args) {
String str1 = "aaa@";
String str2 = "aaaaaaa@qq.com";
String str3 = "1111@1111tongfu.com";
String str4 = "123456@qq.com";
String str5 = "ABCDE@guiEdu.cn";
System.out.println(str1 + " 的合法性::" + IsEmail(str1));
System.out.println(str2 + " 的合法性::" + IsEmail(str2));
System.out.println(str3 + " 的合法性::" + IsEmail(str3));
System.out.println(str4 + " 的合法性::" + IsEmail(str4));
System.out.println(str5 + " 的合法性::" + IsEmail(str5));
}
}
复制代码
执行结果为:
aaa@ 的合法性::false
aaaaaaa@qq.com
的合法性::true
1111@1111tongfu.com
的合法性::true
123456@qq.com
的合法性::true
ABCDE@guiEdu.cn
的合法性::false
分析:通常情况下,E-mail的格式为“
X@X.com
”,字母X表示任意的一个或多个字符,@为E-mail地址中的特有符号,@后面跟上一个或者多个字符,之后是字符“.com”或者“.cn”。
所以我简单地把判断的格式定义为
String regex = "\\w+@\\w+(\\.\\w{1})*\\.com"; 不过这样一来就不知道要怎样去兼顾“.cn”的结尾。
请教下要如何书写判断的语句才能最完全地判断邮箱的格式(请附带上表达式的具体解析过程),谢谢。
作者:
chensc
时间:
2013-7-16 06:05
学习学习!
作者:
wedge
时间:
2013-7-16 09:59
合法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 :与任何单词字符匹配,包括下划线。 $ :匹配输入的结尾。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2