diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 7a92c6753..130bf0a1c 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -21,7 +21,7 @@ module StandardFilters '"' => '"', "'" => ''', }.freeze - HTML_ESCAPE_ONCE_REGEXP = /["><']|&(?!([a-zA-Z]+|(#\d+));)/ + HTML_ESCAPE_ONCE_REGEXP = /["><']|&(?!([a-zA-Z]+|(#\d+)|(#[xX][\dA-Fa-f]+));)/ STRIP_HTML_BLOCKS = Regexp.union( %r{}m, //m, diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index 28c006cb9..f12c409f8 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -168,6 +168,8 @@ def test_h def test_escape_once assert_equal('<strong>Hulk</strong>', @filters.escape_once('<strong>Hulk')) + assert_equal("1 <>&"' 2 & 3", @filters.escape_once('1 <>&"\' 2 & 3')) + assert_equal(" ' ' λ λ " ' < > ", @filters.escape_once(" ' ' λ λ \" ' < > ")) end def test_base64_encode