Is Java Regex Thread Safe?

后端 未结 5 835
忘掉有多难
忘掉有多难 2020-11-27 03:24

I have a function that uses Pattern#compile and a Matcher to search a list of strings for a pattern.

This function is used in multiple th

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-27 03:26

    To sum up, you can reuse (keep in static variables) the compiled Pattern(s) and tell them to give you new Matchers when needed to validate those regex pattens against some string

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * Validation helpers
     */
    public final class Validators {
    
    private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$";
    
    private static Pattern email_pattern;
    
      static {
        email_pattern = Pattern.compile(EMAIL_PATTERN);
      }
    
      /**
       * Check if e-mail is valid
       */
      public static boolean isValidEmail(String email) { 
        Matcher matcher = email_pattern.matcher(email);
        return matcher.matches();
      }
    
    }
    

    see http://zoomicon.wordpress.com/2012/06/01/validating-e-mails-using-regular-expressions-in-java/ (near the end) regarding the RegEx pattern used above for validating e-mails (in case it doesn't fit ones needs for e-mail validation as it is posted here)

提交回复
热议问题