const regex = /(?m)
^
(?=
(?:
(?:
(?(1) (?!) )
( . ) # (1)
| (?(2) (?!) )
(?! \1 )
( . ) # (2)
| (?(3) (?!) )
(?! \1 | \2 )
( . ) # (3)
| (?(4) (?!) )
(?! \1 | \2 | \3 )
( . ) # (4)
| (?(5) (?!) )
(?! \1 | \2 | \3 | \4 )
( . ) # (5)
| (?(6) (?!) )
(?! \1 | \2 | \3 | \4 | \5 )
( . ) # (6)
| (?(7) (?!) )
(?! \1 | \2 | \3 | \4 | \5 | \6 )
( . ) # (7)
| (?(8) (?!) )
(?! \1 | \2 | \3 | \4 | \5 | \6 | \7 )
( . ) # (8)
| (?(9) (?!) )
(?! \1 | \2 | \3 | \4 | \5 | \6 | \7 | \8 )
( . ) # (9)
)
\S*?
){1,9}
$
)
(?= (?: \1|\2|\3|\4|\5|\6|\7|\8|\9 )* $ )
(?(DEFINE)
(?<one> # (8)
(?: (?! \1 ) . )*
\1
)
(?<two> # (9)
(?: (?! \2 ) . )*
\2
)
(?<three> # (10)
(?: (?! \3 ) . )*
\3
)
(?<four> # (11)
(?: (?! \4 ) . )*
\4
)
(?<five> # (12)
(?: (?! \5 ) . )*
\5
)
(?<six> # (13)
(?: (?! \6 ) . )*
\6
)
(?<seven> # (14)
(?: (?! \7 ) . )*
\7
)
(?<eight> # (15)
(?: (?! \8 ) . )*
\8
)
(?<nine> # (16)
(?: (?! \9 ) . )*
\9
)
)
(?: ### Times Table 9 x 9 = 81 max char string
# 1
(?(1) (?= (?&one) {1} (?! .* \1 ))
(?(2) (?= (?&two) {1} (?! .* \2 ))
(?(3) (?= (?&three){1} (?! .* \3 ))
(?(4) (?= (?&four) {1} (?! .* \4 ))
(?(5) (?= (?&five) {1} (?! .* \5 ))
(?(6) (?= (?&six) {1} (?! .* \6 ))
(?(7) (?= (?&seven){1} (?! .* \7 ))
(?(8) (?= (?&eight){1} (?! .* \8 ))
(?(9) (?= (?&nine) {1} (?! .* \9 ))
)))))))))
| # 2
(?(1) (?= (?&one) {2} (?! .* \1 ))
(?(2) (?= (?&two) {2} (?! .* \2 ))
(?(3) (?= (?&three){2} (?! .* \3 ))
(?(4) (?= (?&four) {2} (?! .* \4 ))
(?(5) (?= (?&five) {2} (?! .* \5 ))
(?(6) (?= (?&six) {2} (?! .* \6 ))
(?(7) (?= (?&seven){2} (?! .* \7 ))
(?(8) (?= (?&eight){2} (?! .* \8 ))
(?(9) (?= (?&nine) {2} (?! .* \9 ))
)))))))))
| # 3
(?(1) (?= (?&one) {3} (?! .* \1 ))
(?(2) (?= (?&two) {3} (?! .* \2 ))
(?(3) (?= (?&three){3} (?! .* \3 ))
(?(4) (?= (?&four) {3} (?! .* \4 ))
(?(5) (?= (?&five) {3} (?! .* \5 ))
(?(6) (?= (?&six) {3} (?! .* \6 ))
(?(7) (?= (?&seven){3} (?! .* \7 ))
(?(8) (?= (?&eight){3} (?! .* \8 ))
(?(9) (?= (?&nine) {3} (?! .* \9 ))
)))))))))
| # 4
(?(1) (?= (?&one) {4} (?! .* \1 ))
(?(2) (?= (?&two) {4} (?! .* \2 ))
(?(3) (?= (?&three){4} (?! .* \3 ))
(?(4) (?= (?&four) {4} (?! .* \4 ))
(?(5) (?= (?&five) {4} (?! .* \5 ))
(?(6) (?= (?&six) {4} (?! .* \6 ))
(?(7) (?= (?&seven){4} (?! .* \7 ))
(?(8) (?= (?&eight){4} (?! .* \8 ))
(?(9) (?= (?&nine) {4} (?! .* \9 ))
)))))))))
| # 5
(?(1) (?= (?&one) {5} (?! .* \1 ))
(?(2) (?= (?&two) {5} (?! .* \2 ))
(?(3) (?= (?&three){5} (?! .* \3 ))
(?(4) (?= (?&four) {5} (?! .* \4 ))
(?(5) (?= (?&five) {5} (?! .* \5 ))
(?(6) (?= (?&six) {5} (?! .* \6 ))
(?(7) (?= (?&seven){5} (?! .* \7 ))
(?(8) (?= (?&eight){5} (?! .* \8 ))
(?(9) (?= (?&nine) {5} (?! .* \9 ))
)))))))))
| # 6
(?(1) (?= (?&one) {6} (?! .* \1 ))
(?(2) (?= (?&two) {6} (?! .* \2 ))
(?(3) (?= (?&three){6} (?! .* \3 ))
(?(4) (?= (?&four) {6} (?! .* \4 ))
(?(5) (?= (?&five) {6} (?! .* \5 ))
(?(6) (?= (?&six) {6} (?! .* \6 ))
(?(7) (?= (?&seven){6} (?! .* \7 ))
(?(8) (?= (?&eight){6} (?! .* \8 ))
(?(9) (?= (?&nine) {6} (?! .* \9 ))
)))))))))
| # 7
(?(1) (?= (?&one) {7} (?! .* \1 ))
(?(2) (?= (?&two) {7} (?! .* \2 ))
(?(3) (?= (?&three){7} (?! .* \3 ))
(?(4) (?= (?&four) {7} (?! .* \4 ))
(?(5) (?= (?&five) {7} (?! .* \5 ))
(?(6) (?= (?&six) {7} (?! .* \6 ))
(?(7) (?= (?&seven){7} (?! .* \7 ))
(?(8) (?= (?&eight){7} (?! .* \8 ))
(?(9) (?= (?&nine) {7} (?! .* \9 ))
)))))))))
| # 8
(?(1) (?= (?&one) {8} (?! .* \1 ))
(?(2) (?= (?&two) {8} (?! .* \2 ))
(?(3) (?= (?&three){8} (?! .* \3 ))
(?(4) (?= (?&four) {8} (?! .* \4 ))
(?(5) (?= (?&five) {8} (?! .* \5 ))
(?(6) (?= (?&six) {8} (?! .* \6 ))
(?(7) (?= (?&seven){8} (?! .* \7 ))
(?(8) (?= (?&eight){8} (?! .* \8 ))
(?(9) (?= (?&nine) {8} (?! .* \9 ))
)))))))))
| # 9
(?(1) (?= (?&one) {9} (?! .* \1 ))
(?(2) (?= (?&two) {9} (?! .* \2 ))
(?(3) (?= (?&three){9} (?! .* \3 ))
(?(4) (?= (?&four) {9} (?! .* \4 ))
(?(5) (?= (?&five) {9} (?! .* \5 ))
(?(6) (?= (?&six) {9} (?! .* \6 ))
(?(7) (?= (?&seven){9} (?! .* \7 ))
(?(8) (?= (?&eight){9} (?! .* \8 ))
(?(9) (?= (?&nine) {9} (?! .* \9 ))
)))))))))
)
.*/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?m)
^
(?=
(?:
(?:
(?(1) (?!) )
( . ) # (1)
| (?(2) (?!) )
(?! \\1 )
( . ) # (2)
| (?(3) (?!) )
(?! \\1 | \\2 )
( . ) # (3)
| (?(4) (?!) )
(?! \\1 | \\2 | \\3 )
( . ) # (4)
| (?(5) (?!) )
(?! \\1 | \\2 | \\3 | \\4 )
( . ) # (5)
| (?(6) (?!) )
(?! \\1 | \\2 | \\3 | \\4 | \\5 )
( . ) # (6)
| (?(7) (?!) )
(?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 )
( . ) # (7)
| (?(8) (?!) )
(?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 | \\7 )
( . ) # (8)
| (?(9) (?!) )
(?! \\1 | \\2 | \\3 | \\4 | \\5 | \\6 | \\7 | \\8 )
( . ) # (9)
)
\\S*?
){1,9}
$
)
(?= (?: \\1|\\2|\\3|\\4|\\5|\\6|\\7|\\8|\\9 )* $ )
(?(DEFINE)
(?<one> # (8)
(?: (?! \\1 ) . )*
\\1
)
(?<two> # (9)
(?: (?! \\2 ) . )*
\\2
)
(?<three> # (10)
(?: (?! \\3 ) . )*
\\3
)
(?<four> # (11)
(?: (?! \\4 ) . )*
\\4
)
(?<five> # (12)
(?: (?! \\5 ) . )*
\\5
)
(?<six> # (13)
(?: (?! \\6 ) . )*
\\6
)
(?<seven> # (14)
(?: (?! \\7 ) . )*
\\7
)
(?<eight> # (15)
(?: (?! \\8 ) . )*
\\8
)
(?<nine> # (16)
(?: (?! \\9 ) . )*
\\9
)
)
(?: ### Times Table 9 x 9 = 81 max char string
# 1
(?(1) (?= (?&one) {1} (?! .* \\1 ))
(?(2) (?= (?&two) {1} (?! .* \\2 ))
(?(3) (?= (?&three){1} (?! .* \\3 ))
(?(4) (?= (?&four) {1} (?! .* \\4 ))
(?(5) (?= (?&five) {1} (?! .* \\5 ))
(?(6) (?= (?&six) {1} (?! .* \\6 ))
(?(7) (?= (?&seven){1} (?! .* \\7 ))
(?(8) (?= (?&eight){1} (?! .* \\8 ))
(?(9) (?= (?&nine) {1} (?! .* \\9 ))
)))))))))
| # 2
(?(1) (?= (?&one) {2} (?! .* \\1 ))
(?(2) (?= (?&two) {2} (?! .* \\2 ))
(?(3) (?= (?&three){2} (?! .* \\3 ))
(?(4) (?= (?&four) {2} (?! .* \\4 ))
(?(5) (?= (?&five) {2} (?! .* \\5 ))
(?(6) (?= (?&six) {2} (?! .* \\6 ))
(?(7) (?= (?&seven){2} (?! .* \\7 ))
(?(8) (?= (?&eight){2} (?! .* \\8 ))
(?(9) (?= (?&nine) {2} (?! .* \\9 ))
)))))))))
| # 3
(?(1) (?= (?&one) {3} (?! .* \\1 ))
(?(2) (?= (?&two) {3} (?! .* \\2 ))
(?(3) (?= (?&three){3} (?! .* \\3 ))
(?(4) (?= (?&four) {3} (?! .* \\4 ))
(?(5) (?= (?&five) {3} (?! .* \\5 ))
(?(6) (?= (?&six) {3} (?! .* \\6 ))
(?(7) (?= (?&seven){3} (?! .* \\7 ))
(?(8) (?= (?&eight){3} (?! .* \\8 ))
(?(9) (?= (?&nine) {3} (?! .* \\9 ))
)))))))))
| # 4
(?(1) (?= (?&one) {4} (?! .* \\1 ))
(?(2) (?= (?&two) {4} (?! .* \\2 ))
(?(3) (?= (?&three){4} (?! .* \\3 ))
(?(4) (?= (?&four) {4} (?! .* \\4 ))
(?(5) (?= (?&five) {4} (?! .* \\5 ))
(?(6) (?= (?&six) {4} (?! .* \\6 ))
(?(7) (?= (?&seven){4} (?! .* \\7 ))
(?(8) (?= (?&eight){4} (?! .* \\8 ))
(?(9) (?= (?&nine) {4} (?! .* \\9 ))
)))))))))
| # 5
(?(1) (?= (?&one) {5} (?! .* \\1 ))
(?(2) (?= (?&two) {5} (?! .* \\2 ))
(?(3) (?= (?&three){5} (?! .* \\3 ))
(?(4) (?= (?&four) {5} (?! .* \\4 ))
(?(5) (?= (?&five) {5} (?! .* \\5 ))
(?(6) (?= (?&six) {5} (?! .* \\6 ))
(?(7) (?= (?&seven){5} (?! .* \\7 ))
(?(8) (?= (?&eight){5} (?! .* \\8 ))
(?(9) (?= (?&nine) {5} (?! .* \\9 ))
)))))))))
| # 6
(?(1) (?= (?&one) {6} (?! .* \\1 ))
(?(2) (?= (?&two) {6} (?! .* \\2 ))
(?(3) (?= (?&three){6} (?! .* \\3 ))
(?(4) (?= (?&four) {6} (?! .* \\4 ))
(?(5) (?= (?&five) {6} (?! .* \\5 ))
(?(6) (?= (?&six) {6} (?! .* \\6 ))
(?(7) (?= (?&seven){6} (?! .* \\7 ))
(?(8) (?= (?&eight){6} (?! .* \\8 ))
(?(9) (?= (?&nine) {6} (?! .* \\9 ))
)))))))))
| # 7
(?(1) (?= (?&one) {7} (?! .* \\1 ))
(?(2) (?= (?&two) {7} (?! .* \\2 ))
(?(3) (?= (?&three){7} (?! .* \\3 ))
(?(4) (?= (?&four) {7} (?! .* \\4 ))
(?(5) (?= (?&five) {7} (?! .* \\5 ))
(?(6) (?= (?&six) {7} (?! .* \\6 ))
(?(7) (?= (?&seven){7} (?! .* \\7 ))
(?(8) (?= (?&eight){7} (?! .* \\8 ))
(?(9) (?= (?&nine) {7} (?! .* \\9 ))
)))))))))
| # 8
(?(1) (?= (?&one) {8} (?! .* \\1 ))
(?(2) (?= (?&two) {8} (?! .* \\2 ))
(?(3) (?= (?&three){8} (?! .* \\3 ))
(?(4) (?= (?&four) {8} (?! .* \\4 ))
(?(5) (?= (?&five) {8} (?! .* \\5 ))
(?(6) (?= (?&six) {8} (?! .* \\6 ))
(?(7) (?= (?&seven){8} (?! .* \\7 ))
(?(8) (?= (?&eight){8} (?! .* \\8 ))
(?(9) (?= (?&nine) {8} (?! .* \\9 ))
)))))))))
| # 9
(?(1) (?= (?&one) {9} (?! .* \\1 ))
(?(2) (?= (?&two) {9} (?! .* \\2 ))
(?(3) (?= (?&three){9} (?! .* \\3 ))
(?(4) (?= (?&four) {9} (?! .* \\4 ))
(?(5) (?= (?&five) {9} (?! .* \\5 ))
(?(6) (?= (?&six) {9} (?! .* \\6 ))
(?(7) (?= (?&seven){9} (?! .* \\7 ))
(?(8) (?= (?&eight){9} (?! .* \\8 ))
(?(9) (?= (?&nine) {9} (?! .* \\9 ))
)))))))))
)
.*', 'gm')
const str = `------------------------------
match_words =
------------------------------
arraigning
nonordered
abadbacdcacbdbdc
mesosome
ananna
unendued
tromometer
caucasus
intestines
i
deed
horseshoer
happenchance
reappear
deeded
pullup
arraigning
testes
mononymy
scintillescent
couscous
------------------------------
not_match_words =
------------------------------
edified
unreverberating
underpass
interinsert
pilfered
nippiness
gregarinian
deicide
nonaristocratic
rototiller
ozonizing
museums
backbreaker
interradiated
antistalling
naturalize
equitriangular
reparticipate
ppd
miasmas
cabbage
`;
// 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