const regex = /# Look for `Wild Draw Four` or simply `Wild`
# `W` stored in \1, `D` and `F` stored in \2 and \3, respectively
(W)I\ LD(?:\ (D)raw\ (F)our)?
|
# Look for `Draw Two` or `Draw Four`
# `D` stored in \4, `T` or `F` stored in \5
(D)raw\ (?|(T)wo|(F)our)
|
# Look for the color and then the card type or number value
# `R`, `G`, `Y`, and `B` stored in \6
# `S`, `R` or number value stored in \7
(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue)\
(?|(S)kip
|(R)everse
|(\d)
)
)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('# Look for `Wild Draw Four` or simply `Wild`
# `W` stored in \\1, `D` and `F` stored in \\2 and \\3, respectively
(W)I\\ LD(?:\\ (D)raw\\ (F)our)?
|
# Look for `Draw Two` or `Draw Four`
# `D` stored in \\4, `T` or `F` stored in \\5
(D)raw\\ (?|(T)wo|(F)our)
|
# Look for the color and then the card type or number value
# `R`, `G`, `Y`, and `B` stored in \\6
# `S`, `R` or number value stored in \\7
(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue)\\
(?|(S)kip
|(R)everse
|(\\d)
)
)', 'g')
const str = `GIVEN:
Green 4 Green 4 Green 7 WI LD Green 9 Green 9 Red 3 Red 3 Red 4 WI LD Draw Four Red 5 Red Reverse Yellow 0 Yellow Skip Green 8 WI LD Draw Four
DESIRED:
G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF
`;
const subst = `\1\2\3\4\5\6\7`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions