Sitecore Experience Forms - Bad JSON escape sequence

Description

Sitecore on form submission, submit action fails. We had multiple submit action. Save action worked and rest of all the actions failed. We also had a custom submit action that was failing too. The issue occurred only on Content Delivery but worked on Content Authoring.

Exception Details

ERROR [Experience Forms]: Bad JSON escape sequence: \d. Path 'regularExpression', line 1, position 31.

Exception: Newtonsoft.Json.JsonReaderException

Message: Bad JSON escape sequence: \d. Path 'regularExpression', line 1, position 31.

Source: Newtonsoft.Json

at Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(Char quote)

at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)

at Newtonsoft.Json.JsonTextReader.ReadAsString()

at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)

at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)

at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)

at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)

at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)

at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)

at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)

at Sitecore.ExperienceForms.Mvc.Models.Validation.ValidationElement`1.TryParse(String value, TParameters& target)

Solution

  1. Open content editor Using your master database, navigate to the "/sitecore/system/Settings/Forms/Validations/Phone Number Validator" item
  2. In the Parameters field change the following from 'a' to 'b' (add an additional backslash in front of existing backslashes) as follows:

    a. {"regularExpression":"^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})__aSyNcId_<_hweqLmLh__quot;}

    b. {"regularExpression":"^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})__aSyNcId_<_hweqLmLh__quot;}
  3. Save and publish this item to the web database
  4. Switch to the web database in Sitecore Desktop and make sure the field updated correctly.

Note: I have to Republish the item for the change to work.

Thanks for Sitecore Support to find this wierd issue and provide a solution.