Expected and actual behavior
decontract("wouldn't've");
// expected: "would not have"
// actual: "would not've"
decontract("'cause");
// expected: "because"
// actual: "'cause"
Description
The replacement logic uses Regex word boundaries, but this does not give the expected result when a word contains multiple apostrophes or end/starts with an apostrophe.