fixed regex, put back code block where it was
diff --git a/cronexpr_parse.go b/cronexpr_parse.go
index a1ab438..289ad53 100644
--- a/cronexpr_parse.go
+++ b/cronexpr_parse.go
@@ -179,7 +179,7 @@
 /******************************************************************************/
 
 var (
-	layoutWildcard            = `^\*|\?$`
+	layoutWildcard            = `^\*$|^\?$`
 	layoutValue               = `^(%value%)$`
 	layoutRange               = `^(%value%)-(%value%)$`
 	layoutWildcardAndInterval = `^\*/(\d+)$`
@@ -412,16 +412,6 @@
 		}
 		snormal := strings.ToLower(s[indices[i][0]:indices[i][1]])
 
-		// `*/2`
-		pairs := makeLayoutRegexp(layoutWildcardAndInterval, desc.valuePattern).FindStringSubmatchIndex(snormal)
-		if len(pairs) > 0 {
-			directive.kind = span
-			directive.first = desc.min
-			directive.last = desc.max
-			directive.step = atoi(snormal[pairs[2]:pairs[3]])
-			directives = append(directives, &directive)
-			continue
-		}
 		// `*`
 		if makeLayoutRegexp(layoutWildcard, desc.valuePattern).MatchString(snormal) {
 			directive.kind = all
@@ -439,7 +429,7 @@
 			continue
 		}
 		// `5-20`
-		pairs = makeLayoutRegexp(layoutRange, desc.valuePattern).FindStringSubmatchIndex(snormal)
+		pairs := makeLayoutRegexp(layoutRange, desc.valuePattern).FindStringSubmatchIndex(snormal)
 		if len(pairs) > 0 {
 			directive.kind = span
 			directive.first = desc.atoi(snormal[pairs[2]:pairs[3]])
@@ -448,6 +438,16 @@
 			directives = append(directives, &directive)
 			continue
 		}
+		// `*/2`
+		pairs = makeLayoutRegexp(layoutWildcardAndInterval, desc.valuePattern).FindStringSubmatchIndex(snormal)
+		if len(pairs) > 0 {
+			directive.kind = span
+			directive.first = desc.min
+			directive.last = desc.max
+			directive.step = atoi(snormal[pairs[2]:pairs[3]])
+			directives = append(directives, &directive)
+			continue
+		}
 		// `5/2`
 		pairs = makeLayoutRegexp(layoutValueAndInterval, desc.valuePattern).FindStringSubmatchIndex(snormal)
 		if len(pairs) > 0 {