const regex = /(^(HL\/)+HL$)|(^HLx\d+$)|(^HL$)/gmi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(^(HL\\\/)+HL$)|(^HLx\\d+$)|(^HL$)', 'gmi')
const str = `Guard
HL/H
-
HL/HL
L/L
L/L
HL/HL
L/HL
HL/HL
L/HL
HL/HL/HL
L/HL/HL
HL/HL
HL/HL/HL
HL/HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/HL
HL/HL/HL
HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/L/HL
HL/HL
HL/HL
HL/H
HL/HL
HL/HL
HL/HL
HL/HL
HL
HL/HL
HL/HL
HL/HL
HL
LH/LH
L/H
HL/HL
HL/HL
HL
LH/LH
L/H
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL/HL
HL/HL/HL
HL
HL
HL
HL
HL
(B+F)+LP+LK
(B/F)+LP+LK
LP+LK
HL
HL
HL
HL
L
HL
L
HL
HL
HL
L
L
L
L
L
L
HL
LP+LK
-
-
-
F/B+LP+LK
F+LP+LK
HL
HL
HL
HL
HL
H
HL
LP+LK
B+LP+LK on backturned opponent
HL
LP+LK
HL
HL
HL
HL
HL
H
B/F+LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
LP+LK
=+
=+
LP+LK
H
H
HL
HL
HL
LP+LK
HL
HL
HL
LP+LK
HL
HL
L
HL
L
L
HL
LP+LK
HLx2
HL
HL
HL
B+LP+LK
B/F+LP+LK
B/F+LP+LK
B/F+LP+LK
HL
HL
HL
HL
HL
LP+LK
Close to Oponnent On Air LP+LK
LP+LK
(F)+LP+LK
HL/HL/HL
HL
HL/HL
HL
LP+LK
HL
HL
HL
L
L
L
LP+LK
HL
HL
HL
B+LP+LK
HL
HL
(Air) LP+LK
LP+LK
LP+LK
B+LP+LK
LP+LK
HL
HL
HL
LP+LK
(B/F)+LP+LK
H
F+LP+LK
HL
H/H
HL
HL
HL
HL
HL/HL
HL/HL/HL
HL/HL/HL
HL
HL
HL
HLx7
HL/HL/HL
HLx4
HLx3+HL/Lx3 Down
HL/HL/HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
HL
HL
HL
L
H
H
HL
Impossible
HL
H
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
HL
HL
HL
H
HL
HL
HL
L
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
HL
H
HL
Impossible
HL
HL
HL
H
H
H
H
H
HL
HL/HL
HL
H
HL
HL
H
H
H
HL
H
HL
L
H
HL
HL
HL
HL
HL
H
HL
HL
H
H
H
HL/HL
HL
-
HL
H
H
HL
HL
HL/HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
Impossible
Impossible
Impossible
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
L
HL
L
HL
HL
HL
HL
HL
HL
L
L
L
L
HLx1~5
HLx1~5
HLx1~5
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
HL
HL
HL
HL
HL
HL
Impossible
HL
H
H
H
HL
HL
Impossible
Impossible
Impossible
Impossible
Impossible
Impossible
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
HL/HL/HL
HL/HL
Impossible
Impossible
Impossible
HL
Impossible
Impossible
Impossible
HL
HL
HL
HL
HL
HL
Hx2
HL
Hx2
HL
HL
HL
H
HLx4
HL
HL
HLx3
HL
L/HL
HL/HL
HL
H
HLx2
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL
HLx2
HL
HL
HL
HL
H/H
H
HL/HL
HL/HL/HL
HL
HL
HL/HL/HL
HL/H
L
HL/HL
HL
H
H
H(far) or L(close)
H
HLx2
HL
HL
HL
-
HL
HL/HL/HL
HL/HL/HL
H
HL/HL/HL/HL
HL/HL/HL/HL/HL
H
HL/HL/HL
HL
HL/HL
HL
HL
HL
HL
H/H
H/H
H/H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
H
HL
HL
H
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
HL/HL/HL/HL
HL/HL/HL/HL/HL
HL/HL
H
H
H
H
H
H
H
H
H
-
HL
HL
H
H
H
H
H
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
HL/HL/HL/HL
-
H
HLx4
H
H
HL
HL
HL
HL
H/H
H/H
H/H
Lx2
Lx4
Lx2
HL
HL
HL/HL
H/L
-
-
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
HL
HL
HL
HL
L
L
L
L
HL
HL
HL
HL
HL
HL/HL
H
HL
HL
HL
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
-
-
HL
HL/H/H
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H/H
H
HLx2
HLx1~5
HL/HL/HL
HL/HL
HL/HL
HL/HL
HL/HL
HL
H
HL/H/H
-
HL
Lx5
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
L
L
L
L
L
L
L
L
L
L
L
HL
HL
HL
H
HL
HL
HL
HL
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
HL
HL
HL
HL
H
H
H
H
H
H
H
H
H
H
H
H
HL
HLx2
H
HL
HL
H
-
HL
HL
HL
HL
HL
HL
HL
HL
HL
HLx2
HLx2
HLx2
HLx3
HLx3
HLx3
-
-
-
HL
HL
L
HL
HL
HL/HL/HL
HL
HL
HL
HL
HL
HL/HL
HL
HL
H
H
H
H
H
H
H
H
H
H
HL/H/H
HL
HL
HL
H
H
H
H
H
HL
HL
HL
HL
H
HL
HL
HL
HLx2
HL/HL/HL
HLx2
HL
HLx2
HL/HL
HL
HLx2
Hx3
HL
H
H
H
-
HL
HL
HL
HL
HL
HL
HL
HL/HL/HL
HL
HL
H
H
H
H
H
H
H
H
H
HL
HL
HL
HL
HL
HL
H/H
HL
HL
HLx2
L
L
HL
H
HL
HL
HL
HL
HL
HL
H
H
H
H
H
H
H
H
HL
L
H
H
H
H
HL
HL
HL
HLx2
HL
HL
H
Impossible
HL
H
H
H
HLx2
H
H
HL
HL
HL
HL
H
HL
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
HL
H
H
H
-
H
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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