const regex = /^(?<ROYAL_FLUSH>(A)(.) K\3 Q\3 J\3 T\3)|(?<STRAIGHT_FLUSH>(K)(.) Q\6 J\6 T\6 9\6|(Q)(.) J\8 T\8 9\8 8\8|(J)(.) T\10 9\10 8\10 7\10|(T)(.) 9\12 8\12 7\12 6\12|(9)(.) 8\14 7\14 6\14 5\14|(8)(.) 7\16 6\16 5\16 4\16|(7)(.) 6\18 5\18 4\18 3\18|(6)(.) 5\20 4\20 3\20 2\20|(A)(.) 5\22 4\22 3\22 2\22)|(?<FOUR_OF_A_KIND>.*(.). \24. \24. \24..*)|(?<FULL_HOUSE>(.). \26. (.). \27. \27.|(.). \28. \28. (.). \29.)|(?<FLUSH>(.)(.) .\32 .\32 .\32 .\32)|(?<STRAIGHT>(A). K. Q. J. T.|(K). Q. J. T. 9.|(Q). J. T. 9. 8.|(J). T. 9. 8. 7.|(T). 9. 8. 7. 6.|(9). 8. 7. 6. 5.|(8). 7. 6. 5. 4.|(7). 6. 5. 4. 3.|(6). 5. 4. 3. 2.|A. (5). 4. 3. 2.)|(?<THREE_OF_A_KIND>.*(.). \45. \45..*)|(?<TWO_PAIR>.*(.). \47. .*(.). \48..*)|(?<PAIR>.*(.). \50..*)|(?<HIGH_CARD>(.).*)$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(?<ROYAL_FLUSH>(A)(.) K\\3 Q\\3 J\\3 T\\3)|(?<STRAIGHT_FLUSH>(K)(.) Q\\6 J\\6 T\\6 9\\6|(Q)(.) J\\8 T\\8 9\\8 8\\8|(J)(.) T\\10 9\\10 8\\10 7\\10|(T)(.) 9\\12 8\\12 7\\12 6\\12|(9)(.) 8\\14 7\\14 6\\14 5\\14|(8)(.) 7\\16 6\\16 5\\16 4\\16|(7)(.) 6\\18 5\\18 4\\18 3\\18|(6)(.) 5\\20 4\\20 3\\20 2\\20|(A)(.) 5\\22 4\\22 3\\22 2\\22)|(?<FOUR_OF_A_KIND>.*(.). \\24. \\24. \\24..*)|(?<FULL_HOUSE>(.). \\26. (.). \\27. \\27.|(.). \\28. \\28. (.). \\29.)|(?<FLUSH>(.)(.) .\\32 .\\32 .\\32 .\\32)|(?<STRAIGHT>(A). K. Q. J. T.|(K). Q. J. T. 9.|(Q). J. T. 9. 8.|(J). T. 9. 8. 7.|(T). 9. 8. 7. 6.|(9). 8. 7. 6. 5.|(8). 7. 6. 5. 4.|(7). 6. 5. 4. 3.|(6). 5. 4. 3. 2.|A. (5). 4. 3. 2.)|(?<THREE_OF_A_KIND>.*(.). \\45. \\45..*)|(?<TWO_PAIR>.*(.). \\47. .*(.). \\48..*)|(?<PAIR>.*(.). \\50..*)|(?<HIGH_CARD>(.).*)$', 'gm')
const str = `AH KH QC JS TS
KH JS 8C 4S 4D
KC 9C 8C 5C 4C
KC KS 8D 4H 2H
AC KS TS 9S 5S
7C 7S 7H 5S 3S
KH QS JS TS 9H
AS AD KH KC 3C
KH KC 5S 5D 2C
6H 5C 4C 3C 2C
9H 8S 7S 6S 5H
KD KC 8S 4S 3H
JC JS JD JH 7H
KD QH JH 8H 8S
KH QH JH TH 9H
KH 7C 7S 7H 2H
AH QH JH TH 8S
3D 3H 2H 2C 2D
KH KC 3S 3H 3D
AD KD TH 9D 6S
TH 9D 7D 6D 2D
AH KH QH JH 8H
KH JC JS JD JH
7C 6C 5C 4C 3C
JC JS JD JH 6H
AH KH QH JH TH
TC 9C 8C 5C 3C
7S 5H 4S 3H 2C
KS 9S 8D 4D 4S
KS 9S 8S 5S 3S
KH KC 5D 5S 3C
AH AS KC JH 8S
3S 3H 3D 2H 2C
AC AH AS KH QH
JH TC 8C 6C 2S
6D 5D 4D 3D 2D
9D 8H 7H 6S 2C
4C 4H 3H 3S 2H`;
// 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