$re = '/(?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 ))
)))))))))
)
.*/mx';
$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
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php