diff --git a/CHANGELOG b/CHANGELOG index ae0b425e8e..95482c629a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,6 @@ * 1.42.4 (2019-XX-XX) - * n/a + * added supported for exponential numbers * 1.42.3 (2019-08-24) diff --git a/src/Lexer.php b/src/Lexer.php index 8cae3597f1..697a6cfa1d 100644 --- a/src/Lexer.php +++ b/src/Lexer.php @@ -47,7 +47,7 @@ class Lexer implements \Twig_LexerInterface const STATE_INTERPOLATION = 4; const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; - const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A'; + const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?([Ee][\+\-][0-9]+)?/A'; const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; const REGEX_DQ_STRING_DELIM = '/"/A'; const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; diff --git a/tests/Fixtures/expressions/exponential_numbers.test b/tests/Fixtures/expressions/exponential_numbers.test new file mode 100644 index 0000000000..f403110bcc --- /dev/null +++ b/tests/Fixtures/expressions/exponential_numbers.test @@ -0,0 +1,8 @@ +--TEST-- +Twig manages exponentiel numbers correctly +--TEMPLATE-- +{{ 1.99E+3 }} +--DATA-- +return [] +--EXPECT-- +1990