diff --git a/token.module b/token.module
index 4a89077..d0bbcdc 100644
--- a/token.module
+++ b/token.module
@@ -647,6 +647,17 @@ function token_get_invalid_tokens_by_context($value, $valid_types = array(), $le
   }
 
   array_unique($invalid_tokens);
+
+  // Some modules use wildcard suffixes like _? or -???? or -*.
+  if (!empty($invalid_tokens)) {
+    foreach (array_keys($valid_tokens) as $token) {
+      if (preg_match('/^(.*[_-])[?*]+$/', $token, $wildcards)) {
+        $matched = preg_grep('/^' . $wildcards[1] . '.*$/', $invalid_tokens);
+        $invalid_tokens = array_diff($invalid_tokens, $matched);
+      }
+    }
+  }
+
   $invalid_tokens = token_prepare_tokens($invalid_tokens, $leading, $trailing);
   return $invalid_tokens;
 }
