diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
index 6bf01a0..5c2ee4a 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientRequestContext.java
@@ -207,7 +207,8 @@
      * (missing comma), or the value {@code no - store} (whitespace within value).
      *
      * @param name the message header.
-     * @param valueSeparatorRegex Separates the header value into single values. {@code null} does not split.
+     * @param valueSeparatorRegex String or regular expression that separates the header value into single values. 
+     * {@code null} does not split.
      * @param valuePredicate value must fulfil this predicate.
      * @return {@code true} if and only if a header with the given name exists, having either a whitespace-trimmed value
      * matching the predicate, or having at least one whitespace-trimmed single value in a token-separated list of single values.
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
index 756e428..c6b6d14 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientResponseContext.java
@@ -99,7 +99,8 @@
      * (missing comma), or the value {@code no - store} (whitespace within value).
      *
      * @param name the message header.
-     * @param valueSeparatorRegex Separates the header value into single values. {@code null} does not split.
+     * @param valueSeparatorRegex String or regular expression that separates the header value into single values. 
+     * {@code null} does not split.
      * @param valuePredicate value must fulfil this predicate.
      * @return {@code true} if and only if a header with the given name exists, having either a whitespace-trimmed value
      * matching the predicate, or having at least one whitespace-trimmed single value in a token-separated list of single values.
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java
index 65087cd..90dc2f7 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java
@@ -17,6 +17,7 @@
 package ee.jakarta.tck.ws.rs.api.client.clientrequestcontext;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.io.ByteArrayInputStream;
 import java.lang.annotation.Annotation;
@@ -874,22 +875,31 @@
     ContextProvider provider = new ContextProvider() {
       @Override
       protected void checkFilterContext(ClientRequestContext context) throws Fault {
-          assertTrue(context.containsHeaderString("cache-control", "no-store"::equalsIgnoreCase));
-          assertTrue(context.containsHeaderString("CACHE-CONTROL", ",", "no-transform"::equalsIgnoreCase));
-          assertTrue(!(context.containsHeaderString("CACHE-CONTROL", ",", "Max-Age"::equalsIgnoreCase)));
-          assertTrue(!(context.containsHeaderString("cache-control", ",", "no-transform"::equals)));
-          assertTrue(context.containsHeaderString("cache-control2", ";", "no-transform"::equalsIgnoreCase));
-          assertTrue(!(context.containsHeaderString("cache-control2", ",", 
-                  "no-transform"::equalsIgnoreCase)));
+          assertTrue(context.containsHeaderString("header1", "value"::equalsIgnoreCase));
+          assertTrue(context.containsHeaderString("HEADER1", ",", "value2"::equals));
+          //Incorrect separator character
+          assertFalse(context.containsHeaderString("header1", ";", "value2"::equalsIgnoreCase));
+          //Shouldn't find first value when separator character is incorrect
+          assertFalse(context.containsHeaderString("header1", ";", "value1"::equalsIgnoreCase));
+          //Test regular expression
+          assertFalse(context.containsHeaderString("header1", "; | ,", "value2"::equalsIgnoreCase));
+          //White space in value not trimmed
+          assertFalse(context.containsHeaderString("header1", "whitespace"::equalsIgnoreCase));
+          //Multiple character separator
+          assertTrue(context.containsHeaderString("header2", "::", "Value5"::equalsIgnoreCase));
+          //Test default separator is comma
+          assertFalse(context.containsHeaderString("header3","value6"::equalsIgnoreCase));
           String entity = "Success";
           Response r = Response.ok(entity).build();
           context.abortWith(r);
       }
     };
     Invocation invocation = buildBuilder(provider)
-        .header("cache-control", "no-store")
-        .header("cache-control", "{Max - Age, no-transform}")
-        .header("cache-control2", "{no-store;no-transform}")
+        .header("header1", "value")
+        .header("header1", "value1 , value2")
+        .header("header1", "Value3,white space ")
+        .header("header2", "Value4::Value5")
+        .header("header3", "value6;value7")
         .buildGet();
     Response response = invoke(invocation);
 
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java
index 50bea0f..a0123ee 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java
@@ -16,6 +16,7 @@
 
 package ee.jakarta.tck.ws.rs.api.client.clientresponsecontext;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.BufferedReader;
@@ -437,7 +438,7 @@
    */
   @Test
   public void containsHeaderStringTest() throws Fault {
-      final String header1 = "cache-control";
+      final String header1 = "Header1";
       final String value1 = "no-store";
       final String value2 = "{Max - Age, no-transform}";
       final String header2 = "header2";
@@ -447,18 +448,28 @@
           @Override
           protected void checkFilterContext(ClientRequestContext requestContext,
                   ClientResponseContext responseContext) throws Fault {
-              assertTrue(responseContext.containsHeaderString("cache-control", "no-store"::equalsIgnoreCase));
-              assertTrue(responseContext.containsHeaderString("CACHE-CONTROL", ",", "no-transform"::equalsIgnoreCase));
-              assertTrue(!(responseContext.containsHeaderString("CACHE-CONTROL", ",", "Max-Age"::equalsIgnoreCase)));
-              assertTrue(!(responseContext.containsHeaderString("cache-control", ",", "no-transform"::equals)));
-              assertTrue(responseContext.containsHeaderString("header2", ";", "no-transform"::equalsIgnoreCase));
-              assertTrue(!(responseContext.containsHeaderString("Header2", ",", "no-transform"::equalsIgnoreCase)));
+              assertTrue(responseContext.containsHeaderString("header1", "value"::equalsIgnoreCase));
+              assertTrue(responseContext.containsHeaderString("HEADER1", ",", "value2"::equals));
+              //Incorrect separator character
+              assertFalse(responseContext.containsHeaderString("header1", ";", "value2"::equalsIgnoreCase));
+              //Shouldn't find first value when separator character is incorrect
+              assertFalse(responseContext.containsHeaderString("header1", ";", "value1"::equalsIgnoreCase));
+              //Test regular expression
+              assertFalse(responseContext.containsHeaderString("header1", "; | ,", "value2"::equalsIgnoreCase));
+              //White space in value not trimmed
+              assertFalse(responseContext.containsHeaderString("header1", "whitespace"::equalsIgnoreCase));
+              //Multiple character separator
+              assertTrue(responseContext.containsHeaderString("header2", "::", "Value5"::equalsIgnoreCase));
+              //Test default separator is comma
+              assertFalse(responseContext.containsHeaderString("header3","value6"::equalsIgnoreCase));
           }
       };
       Response response = Response.ok()
-              .header(header1, value1)
-              .header(header1, value2)
-              .header(header2, value3)
+              .header("header1", "value")
+              .header("header1", "value1 , value2")
+              .header("header1", "Value3,white space ")
+              .header("header2", "Value4::Value5")
+              .header("header3", "value6;value7")
               .build();
       invokeWithResponseAndAssertStatus(response, Status.OK, in);
   }
