/*
* 正则表达式元字符:
* . 代表任意一个字符
* | 或者
* \d 代表0~9的任何一个数字
* \D 代表任何一个非数字字符
* \s 代表空白字符
* \S 代表非空白字符
* \w 代表可用作标识符的字符
* \W 代表不可用于标识符的字符
* \p{Lower} 代表小写字母{a~z}
* \p{Upper} 代表大写字母{A~Z}
* \p{ASCII} ASCII字符
* \p{Alpha} 字母字符
* \p{Digit} 十进制数字{0~9}
* \p{Alnum} 数字或字母字符
* \p{Punct} 标点符号
* \p{Graph} 可见字符
* \p{Print} 可打印字符
* \p{Blank} 空格或制表符
* \p{Cntrl} 控制字符
*
* 正则表达式限定符:
* ? 0次或1次
* * 0次或多次
* + 1次或多次
* {n} 正好出现n次
* {n,} 至少出现n次
* {n,m} 出现n~m次
*
* 方括号中元字符的含义
* [abc] 表示a,b或者c
* [^abc] 表示a,b和c之外的任何字符
* [a-zA-z] a~z或A~Z的任何字符
* [a-d[m-p]] a~d或m~p的任何字符
* [a-z&&[...]] a~z与[...]的交集
*
* 判断是否满足正则表达式的方法:
* str.matches(String regex);
*/
public class draft {
public static void main(String[] args) {
String[] s = new String[5];
String regex = "[a-m[n-z]A-Z]+@\\w+\\.{1}com";
s[0] = "guan@qq.com";
s[1] = "guan@.com";
s[2] = "Guan@1.com";
s[3] = "guan";
s[4] = "@qq.com";
for(String l: s)
System.out.println("字符串" + l + (l.matches(regex)? "": "不") + "是一个合法的邮箱地址");
}
}
运行结果如下: