diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+### 0.1.1.3
+
+* Fix bug in float regexp being too lax in the JSON and Core schema ([#7](https://github.com/hvr/HsYAML/issues/7))
+* Remove dependency on `dlist`
+
 ### 0.1.1.2
 
 * Tolerate BOM at *each* `l-document-prefix` (rather than only at the first one encountered in a YAML stream)
diff --git a/HsYAML.cabal b/HsYAML.cabal
--- a/HsYAML.cabal
+++ b/HsYAML.cabal
@@ -1,6 +1,6 @@
 cabal-version:       1.14
 name:                HsYAML
-version:             0.1.1.2
+version:             0.1.1.3
 
 synopsis:            Pure Haskell YAML 1.2 parser
 homepage:            https://github.com/hvr/HsYAML
@@ -14,7 +14,7 @@
                    , 2007-2008 Oren Ben-Kiki
 category:            Text
 build-type:          Simple
-tested-with:         GHC==8.4.3, GHC==8.4.1, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
+tested-with:         GHC==8.6.1, GHC==8.4.3, GHC==8.4.1, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
 description:
   @HsYAML@ is a [YAML 1.2](http://yaml.org/spec/1.2/spec.html) parser implementation for Haskell.
@@ -50,6 +50,7 @@
                      , Data.YAML.Schema
                      , Data.YAML.Token.Encoding
                      , Util
+                     , Data.DList
 
   default-language:    Haskell2010
   other-extensions:    FlexibleContexts
@@ -65,10 +66,9 @@
                        Trustworthy
                        TypeSynonymInstances
 
-  build-depends:       base         >=4.5   && <4.12
+  build-depends:       base         >=4.5   && <4.13
                      , bytestring   >=0.9   && <0.11
-                     , dlist        >=0.8   && <0.9
-                     , containers   >=0.4.2 && <0.6
+                     , containers   >=0.4.2 && <0.7
                      , text         >=1.2.3 && <1.3
                      , mtl          >=2.2.1 && <2.3
                      , parsec       >=3.1.13.0 && < 3.2
diff --git a/src/Data/DList.hs b/src/Data/DList.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/DList.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE Safe #-}
+
+-- |
+-- Copyright: © Herbert Valerio Riedel 2018
+-- SPDX-License-Identifier: GPL-2.0-or-later
+--
+-- Minimal API-compatible rip-off of @Data.DList@
+module Data.DList
+    ( DList
+    , empty
+    , singleton
+    , append
+    , toList
+    ) where
+
+newtype DList a = DList ([a] -> [a])
+
+toList :: DList a -> [a]
+toList (DList dl) = dl []
+
+singleton :: a -> DList a
+singleton x = DList (x:)
+
+empty :: DList a
+empty = DList id
+
+append :: DList a -> DList a -> DList a
+append (DList xs) (DList ys) = DList (xs . ys)
diff --git a/src/Data/YAML/Schema.hs b/src/Data/YAML/Schema.hs
--- a/src/Data/YAML/Schema.hs
+++ b/src/Data/YAML/Schema.hs
@@ -270,7 +270,7 @@
       p3 <- option "" $ do
         void (char 'e' P.<|> char 'E')
         s <- option "" (("-" <$ char '-') P.<|> ("" <$ char '+'))
-        d <- P.many digit
+        d <- P.many1 digit
 
         pure ("e" ++ s ++ d)
 
@@ -303,7 +303,7 @@
       p2 <- option "" $ do
         void (char 'e' P.<|> char 'E')
         s <- option "" (("-" <$ char '-') P.<|> ("" <$ char '+'))
-        d <- P.many digit
+        d <- P.many1 digit
 
         pure ("e" ++ s ++ d)
 
