diff --git a/token.module b/token.module
index 4a89077..3104a8e 100644
--- a/token.module
+++ b/token.module
@@ -647,6 +647,19 @@ 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 ($valid_tokens as $category => $tokens) {
+      foreach (array_keys($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;
 }
