diff --git a/lib/flagsmith_engine.ex b/lib/flagsmith_engine.ex index 388103e..c8eac7b 100644 --- a/lib/flagsmith_engine.ex +++ b/lib/flagsmith_engine.ex @@ -510,7 +510,7 @@ defmodule Flagsmith.Engine do type: :string, value: t_value }) do - case Regex.compile(value) do + case Regex.compile(value, [:anchored]) do {:ok, regex} -> String.match?(t_value, regex) diff --git a/test/unit/segment_conditions_test.exs b/test/unit/segment_conditions_test.exs index ae49d27..27ef0fc 100644 --- a/test/unit/segment_conditions_test.exs +++ b/test/unit/segment_conditions_test.exs @@ -56,6 +56,13 @@ defmodule Flagsmith.Engine.SegmentConditionsTest do {:REGEX, "foo", "[a-z]+", true}, {:REGEX, "FOO", "[a-z]+", false}, {:REGEX, "1.2.3", "\\d", true}, + {:REGEX, "production", "prod", true}, + {:REGEX, "nonproduction", "prod", false}, + {:REGEX, "development", "prod|dev", true}, + {:REGEX, "nondevelopment", "prod|dev", false}, + {:REGEX, "jane@example.com", "@example\\.com$", false}, + {:REGEX, "jane@example.com", "^[^@]+@example\\.com$", true}, + {:REGEX, "foo", "[", false}, {:MODULO, 1, "2|0", false}, {:MODULO, 2, "2|0", true}, {:MODULO, 3, "2|0", false},