从指定的字符串中提取Email
- package net.util.email;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class EmailUtil
- {
- /**
- * 从指定的字符串中提取Email content 指定的字符串
- */
- public static String parse(String content)
- {
- String email = null;
- if (content == null || content.length() < 1) {
- return email;
- }
- // 找出含有@
- int beginPos;
- int i;
- String token = "@";
- String preHalf = "";
- String sufHalf = "";
- beginPos = content.indexOf(token);
- if (beginPos > -1) {
- // 前项扫描
- String s = null;
- i = beginPos;
- while (i > 0) {
- s = content.substring(i - 1, i);
- if (isLetter(s))
- preHalf = s + preHalf;
- else
- break;
- i--;
- }
- // 后项扫描
- i = beginPos + 1;
- while (i < content.length()) {
- s = content.substring(i, i + 1);
- if (isLetter(s))
- sufHalf = sufHalf + s;
- else
- break;
- i++;
- }
- // 判断合法性
- email = preHalf + "@" + sufHalf;
- if (isEmail(email)) {
- return email;
- }
- }
- return null;
- }
- /**
- * 判断是不是合法Email email Email地址
- */
- private static boolean isEmail(String email) {
- try {
- if (email == null || email.length() < 1 || email.length() > 256) {
- return false;
- }
- String check = "^([0-9a-zA-Z]+[_.0-9a-zA-Z-]+)@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2,3})$";
- Pattern regex = Pattern.compile(check);
- Matcher matcher = regex.matcher(email);
- boolean isMatched = matcher.matches();
- if (isMatched) {
- return true;
- } else {
- return false;
- }
- } catch (RuntimeException e) {
- return false;
- }
- }
- /**
- * 判断是不是合法字符 c 要判断的字符
- */
- private static boolean isLetter(String c)
- {
- boolean result = false;
- if (c == null || c.length() < 0) {
- return false;
- }
- // a-z
- if (c.compareToIgnoreCase("a") >= 0 && c.compareToIgnoreCase("z") <= 0) {
- return true;
- }
- // 0-9
- if (c.compareToIgnoreCase("0") >= 0 && c.compareToIgnoreCase("9") <= 0) {
- return true;
- }
- // . - _
- if (c.equals(".") || c.equals("-") || c.equals("_")) {
- return true;
- }
- return result;
- }
- }