diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/IssueExtractor.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/IssueExtractor.java
index e3b3f08..480a70a 100644
--- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/IssueExtractor.java
+++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/IssueExtractor.java
@@ -53,12 +53,26 @@
     return issues.toArray(new String[issues.size()]);
   }
 
+  /**
+   * Gets the regular expression used to identify issue ids.
+   * @return the regular expression, or {@code null}, if there is no pattern
+   *    to match issue ids.
+   */
+  public Pattern getPattern() {
+    Pattern ret = null;
+    String match = gerritConfig.getString("commentLink", itsName, "match");
+    if (match != null) {
+      ret = Pattern.compile(match);
+    }
+    return ret;
+  }
+
   private List<Pattern> getCommentRegexList() {
     ArrayList<Pattern> regexList = new ArrayList<Pattern>();
 
-    String match = gerritConfig.getString("commentLink", itsName, "match");
-    if (match != null) {
-      regexList.add(Pattern.compile(match));
+    Pattern pattern = getPattern();
+    if (pattern != null) {
+      regexList.add(pattern);
     }
 
     return regexList;
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/validation/ItsValidateComment.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/validation/ItsValidateComment.java
index 61dcc4d..57a9ce5 100644
--- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/validation/ItsValidateComment.java
+++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/validation/ItsValidateComment.java
@@ -36,6 +36,7 @@
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.hooks.its.ItsFacade;
 import com.googlesource.gerrit.plugins.hooks.its.ItsName;
+import com.googlesource.gerrit.plugins.hooks.util.IssueExtractor;
 
 public class ItsValidateComment implements CommitValidationListener {
 
@@ -52,6 +53,9 @@
   @Inject @ItsName
   private String itsName;
 
+  @Inject
+  private IssueExtractor issueExtractor;
+
   public List<CommitValidationMessage> validCommit(ReceiveCommand cmd, RevCommit commit) throws CommitValidationException {
 
     HashMap<Pattern, ItsAssociationPolicy> regexes = getCommentRegexMap();
@@ -136,10 +140,10 @@
   private HashMap<Pattern, ItsAssociationPolicy> getCommentRegexMap() {
     HashMap<Pattern, ItsAssociationPolicy> regexMap = new HashMap<Pattern, ItsAssociationPolicy>();
 
-    String match = gerritConfig.getString("commentLink", itsName, "match");
-    if (match != null) {
+    Pattern pattern = issueExtractor.getPattern();
+    if (pattern != null) {
       regexMap
-          .put(Pattern.compile(match), gerritConfig.getEnum("commentLink",
+          .put(pattern, gerritConfig.getEnum("commentLink",
               itsName, "association", ItsAssociationPolicy.OPTIONAL));
     }
 
