diff --git a/decode_test.go b/decode_test.go index 2957a925..888c2b9e 100644 --- a/decode_test.go +++ b/decode_test.go @@ -670,13 +670,13 @@ var unmarshalTests = []struct { M{"ñoño": "very yes 🟔"}, }, - // YAML Float regex shouldn't match this + // This *is* in fact a float number, per the spec. #171 was a mistake. { "a: 123456e1\n", - M{"a": "123456e1"}, + M{"a": 123456e1}, }, { "a: 123456E1\n", - M{"a": "123456E1"}, + M{"a": 123456E1}, }, // yaml-test-suite 3GZX: Spec Example 7.1. Alias Nodes { diff --git a/resolve.go b/resolve.go index 613b3467..983da066 100644 --- a/resolve.go +++ b/resolve.go @@ -77,7 +77,7 @@ func resolvableTag(tag string) bool { return false } -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) +var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) func resolve(tag string, in string) (rtag string, out interface{}) { if !resolvableTag(tag) {