diff --git a/quickcheck-regex.cabal b/quickcheck-regex.cabal
--- a/quickcheck-regex.cabal
+++ b/quickcheck-regex.cabal
@@ -1,5 +1,5 @@
 Name:                quickcheck-regex
-Version:             0.0.2
+Version:             0.0.3
 Homepage:            http://github.com/audreyt/quickcheck-regex/
 Category:            QuickCheck, test, regex
 Synopsis:            Generate regex-constrained strings for QuickCheck
diff --git a/src/Test/QuickCheck/Regex.hs b/src/Test/QuickCheck/Regex.hs
--- a/src/Test/QuickCheck/Regex.hs
+++ b/src/Test/QuickCheck/Regex.hs
@@ -20,6 +20,10 @@
 import Text.Regex.TDFA.ReadRegex (parseRegex)
 import qualified Data.Set as Set
 
+minChar, maxChar :: Char
+minChar = ' '
+maxChar = '~'
+
 matching :: String -> Gen String
 matching regex = case parseRegex regex of
     Left x -> fail $ show x
@@ -31,7 +35,9 @@
         POr ps      -> oneof (map go ps)
         PConcat ps  -> concat `fmap` mapM go ps
         PQuest p    -> oneof [return "", go p]
-        PDot{}      -> (:[]) `fmap` arbitrary
+        PDot{}      -> do
+            n <- choose (fromEnum minChar, fromEnum maxChar)
+            return [toEnum n]
         PPlus p     -> concat `fmap` listOf (go p)
         PStar _ p   -> concat `fmap` listOf1 (go p)
         PBound low high p -> do
@@ -43,7 +49,7 @@
         PAnyNot{ getPatternSet = PatternSet (Just cset) _ _ _ } -> oneChar $ charExclude (Set.toList cset)
         _           -> fail $ "Invalid pattern: " ++ show pat
     oneChar = oneof . map (return . (:[]))
-    charExclude = (['\0'..'\255'] \\)
+    charExclude = ([minChar .. maxChar] \\)
     expandEscape ch = case ch of
         'n' -> "\n"
         't' -> "\t"
