title: Regex not properly matching the restricted values
body: <p>I have created a regex to check if email address has admin, firmware,services &amp; repair. If I put'ad' instead of 'admin' in email address then also it returns true which is not correct as per the requirement.</p>
  
  <pre><code>private static final String EMAIL_PATTERN_New =
              "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
              + "[admin|firmware|repair|service]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
  
  static String email = "xxxx@admin.com";
  static String email1 = "xxxx@ad.com";
  static String email2 = "test@irm.jdsu.com";
  public static boolean validate(final String hex) {
          pattern = Pattern.compile(EMAIL_PATTERN_New);
          matcher = pattern.matcher(hex);
          return matcher.matches();   
      }
  System.out.println(validate(email));     //true
  System.out.println(validate(email1));     //true  but it should be false
  System.out.println(validate(email2));    //true  but it should be false
  </code></pre>
  
  <p>same with other email address firmware, services, repair.</p>