diff --git a/fserver.module b/fserver.module
index 417a981..7a59ba5 100644
--- a/fserver.module
+++ b/fserver.module
@@ -34,7 +34,7 @@ function fserver_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
   if ($op == 'view' && $node->type == 'fserver_distro' && menu_get_object()->nid === $node->nid) {
     //$node->content['field_fserver_drushmake'][0]['value'] = '<code>'. $node->field_fserver_drushmake[0]['value'] .'</code>';
     $node->content['field_fserver_drushmake']['field']['items'][0]['#item']['safe'] = '<fieldset>'. implode('<br />', explode("\r\n", $node->content['field_fserver_drushmake']['field']['items'][0]['#item']['safe'])) .'</fieldset>';
-    
+
   }
   if ($op == 'view' && $node->type == 'fserver_project' && menu_get_object()->nid === $node->nid) {
     $url = url("fserver", array('purl' => array('disabled' => TRUE), 'absolute' => TRUE));
@@ -182,20 +182,24 @@ function fserver_parse_package_name($package_filename) {
  */
 function fserver_parse_tag_name($tag) {
 
-  $regex = (stripos($tag, 'drupal-') === 0)
-              ? '/^(?P<project>\w+)-(?P<core>\d+)--(?P<major>\d+)-(?P<patch>\d+)-?(?P<extra>\w+)?$/'
-              : '/^(?P<core>\d+)\.x-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/';
+  $regexes = array(
+    '/^(?P<project>\w+)-(?P<core>\d+)--(?P<major>\d+)-(?P<patch>\d+)-?(?P<extra>\w+)?$/',
+    '/^(?P<core>\d+)\.x-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/',
+  );
 
-  if (preg_match($regex, $tag, $matches)) {
-    $parsed = array_intersect_key($matches, array('core' => '', 'major' => '', 'patch' => '', 'extra' => ''));
-    if (!empty($parsed)) {
-      $parsed['original'] = $tag;
-      $parsed['core'] = "{$parsed['core']}.x";
-      $parsed['version'] = "{$parsed['core']}-{$parsed['major']}.{$parsed['patch']}" . (!empty($parsed['extra']) ? "-{$parsed['extra']}" : '');
-      if (!empty($parsed['extra']) && preg_match('/^(?P<extratype>[A-Za-z]+)(?P<extranum>\d+)?$/', $parsed['extra'], $extra_matches)) {
-        $parsed = array_merge($parsed, array_intersect_key($extra_matches, array('extratype' => '', 'extranum' => '')));
+  foreach ($regexes as $regex) {
+    if (preg_match($regex, $tag, $matches)) {
+      $parsed = array_intersect_key($matches, array('core' => '', 'major' => '', 'patch' => '', 'extra' => ''));
+      if (!empty($parsed)) {
+        $parsed['original'] = $tag;
+        $parsed['core'] = "{$parsed['core']}.x";
+        $parsed['version'] = "{$parsed['core']}-{$parsed['major']}.{$parsed['patch']}" . (!empty($parsed['extra']) ? "-{$parsed['extra']}" : '');
+        if (!empty($parsed['extra']) && preg_match('/^(?P<extratype>[A-Za-z]+)(?P<extranum>\d+)?$/', $parsed['extra'], $extra_matches)) {
+          $parsed = array_merge($parsed, array_intersect_key($extra_matches, array('extratype' => '', 'extranum' => '')));
+        }
+        return $parsed;
       }
-      return $parsed;
+      break;
     }
   }
 
