diff --git a/pymbolic/parser.py b/pymbolic/parser.py
index 048db64f998941d46afacc89ae334a9cdbe0e758..e5f1269ed09e8a75969ad1eb945bbaab96ddc54f 100644
--- a/pymbolic/parser.py
+++ b/pymbolic/parser.py
@@ -57,9 +57,9 @@ class Parser:
             (_imaginary, (_float, pytools.lex.RE("j"))),
             (_float, ("|",
                 pytools.lex.RE(r"[+-]?[0-9]+\.[0-9]*([eEdD][+-]?[0-9]+)?"),
-                pytools.lex.RE(r"[+-]?[0-9]+(\.[0-9]*)?[eEdD][+-]?[0-9]+"),
+                pytools.lex.RE(r"[+-]?[0-9]+(\.[0-9]*)?[eEdD][+-]?[0-9]+\b"),
                 pytools.lex.RE(r"[+-]?[0-9]*\.[0-9]+([eEdD][+-]?[0-9]+)?"),
-                pytools.lex.RE(r"[+-]?[0-9]*(\.[0-9]+)?[eEdD][+-]?[0-9]+"))),
+                pytools.lex.RE(r"[+-]?[0-9]*(\.[0-9]+)?[eEdD][+-]?[0-9]+\b"))),
             (_int, pytools.lex.RE(r"[0-9]+")),
             (_plus, pytools.lex.RE(r"\+")),
             (_minus, pytools.lex.RE(r"-")),
diff --git a/test/test_pymbolic.py b/test/test_pymbolic.py
index d2f7e97639cc2e8d346b3ff90eb84e79281dce7a..e9a756cd1faa4121bf98d001d6d50b8240e45db7 100644
--- a/test/test_pymbolic.py
+++ b/test/test_pymbolic.py
@@ -135,6 +135,9 @@ def test_parser():
     parse("(2*a[1]*b[1]+2*a[0]*b[0])*(hankel_1(-1,sqrt(a[1]**2+a[0]**2)*k) "
             "-hankel_1(1,sqrt(a[1]**2+a[0]**2)*k))*k /(4*sqrt(a[1]**2+a[0]**2)) "
             "+hankel_1(0,sqrt(a[1]**2+a[0]**2)*k)")
+    print repr(parse("d4knl0"))
+    print repr(parse("0."))
+    print repr(parse("0.e1"))