diff --git a/jsonpointer.py b/jsonpointer.py index 18e4938..628e964 100644 --- a/jsonpointer.py +++ b/jsonpointer.py @@ -228,7 +228,7 @@ def get_part(cls, doc, part): if part == '-': return part - if not JsonPointer._RE_ARRAY_INDEX.match(str(part)): + if not JsonPointer._RE_ARRAY_INDEX.fullmatch(str(part)): raise JsonPointerException("'%s' is not a valid sequence index" % part) return int(part) diff --git a/tests.py b/tests.py index d7cee1f..2cfd049 100755 --- a/tests.py +++ b/tests.py @@ -215,6 +215,10 @@ def test_trailing_escape(self): def test_invalid_escape(self): self.assertRaises(JsonPointerException, JsonPointer, '/foo/bar~2') + def test_leading_zero(self): + doc = [0, 1, 2] + self.assertRaises(JsonPointerException, resolve_pointer, doc, '/01') + class ToLastTests(unittest.TestCase):