From 11907304cbf954538398ae2769e3d37baf8c3e26 Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Mon, 15 Jun 2015 08:27:50 -0400 Subject: [PATCH] fix(forms): parse exponential notation in numberInputType parser Closes #12121 --- src/ng/directive/input.js | 2 +- test/ng/directive/inputSpec.js | 65 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index c3294ed6547..aaf4054ddb8 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -13,7 +13,7 @@ var ISO_DATE_REGEXP = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/; var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; -var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; +var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index becc6b72aa4..3c92625a1b4 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -1917,6 +1917,71 @@ describe('input', function() { }); + it('should parse exponential notation', function() { + var inputElm = helper.compileInput(''); + + // #.###e+## + $rootScope.form.alias.$setViewValue("1.23214124123412412e+26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e+26); + + // #.###e## + $rootScope.form.alias.$setViewValue("1.23214124123412412e26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e26); + + // #.###e-## + $rootScope.form.alias.$setViewValue("1.23214124123412412e-26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e-26); + + // ####e+## + $rootScope.form.alias.$setViewValue("123214124123412412e+26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e26); + + // ####e## + $rootScope.form.alias.$setViewValue("123214124123412412e26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e26); + + // ####e-## + $rootScope.form.alias.$setViewValue("123214124123412412e-26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e-26); + + // #.###E+## + $rootScope.form.alias.$setViewValue("1.23214124123412412E+26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e+26); + + // #.###E## + $rootScope.form.alias.$setViewValue("1.23214124123412412E26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e26); + + // #.###E-## + $rootScope.form.alias.$setViewValue("1.23214124123412412E-26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(1.23214124123412412e-26); + + // ####E+## + $rootScope.form.alias.$setViewValue("123214124123412412E+26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e26); + + // ####E## + $rootScope.form.alias.$setViewValue("123214124123412412E26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e26); + + // ####E-## + $rootScope.form.alias.$setViewValue("123214124123412412E-26"); + expect(inputElm).toBeValid(); + expect($rootScope.value).toBe(123214124123412412e-26); + }); + + describe('min', function() { it('should validate', function() {