diff --git a/lib/DDG/Goodie/RegexCheatSheet.pm b/lib/DDG/Goodie/RegexCheatSheet.pm
index eab98a026..d84855700 100644
--- a/lib/DDG/Goodie/RegexCheatSheet.pm
+++ b/lib/DDG/Goodie/RegexCheatSheet.pm
@@ -172,7 +172,7 @@ handle remainder => sub {
my $syntax_key = $_;
# Let the user provide [a-e], [1-2], nice simple examples only!
- if ($_ =~ /\[([a-zA-Z0-9])\-([a-zA-Z0-9])\]/) {
+ if ($_ =~ /^\[([a-zA-Z0-9])\-([a-zA-Z0-9])\]$/) {
return unless are_valid_char_classes($1, $2);
#if there are < 3 between them then output all between them, otherwise "0 or 1 .. or 9" style
my $range_string = "";
diff --git a/t/RegexCheatSheet.t b/t/RegexCheatSheet.t
index 84c069673..ede4fcfe1 100644
--- a/t/RegexCheatSheet.t
+++ b/t/RegexCheatSheet.t
@@ -38,10 +38,26 @@ ddg_goodie_test(
'[M-Y] - Single character range (M or N ... or Y)',
html => ' [M-Y]
- Single character range (M or N ... or Y)'
),
+ 'regex [3-5]' => test_zci(
+ '[3-5] - Single character range (3 or 4 or 5)',
+ html => ' [3-5]
- Single character range (3 or 4 or 5)'
+ ),
'regex [1-2]' => test_zci(
'[1-2] - Single character range (1 or 2)',
html => ' [1-2]
- Single character range (1 or 2)'
),
+ 'regex [b-X]' => undef,
+ 'regex [a-Z]' => undef,
+ 'regex [Y-E]' => undef,
+ 'regex [A-a]' => undef,
+ 'regex [z-a]' => undef,
+ 'regex [a-1]' => undef,
+ 'regex [1-a]' => undef,
+ 'regex [1-1]' => undef,
+ 'regex [3-2]' => undef,
+ 'regex [a-]' => undef,
+ 'regex [4-8] fo sho!' => undef,
+ 'regex foop [1-3]' => undef,
);
done_testing;
\ No newline at end of file