This is a pretty ugly hack, but maybe it will inspire you to something better. leastCJK = ToCharacterCode["⺀"][[1]]; StringMatchQ[#, _?(ToCharacterCode[#][[1]] < leastCJK &)] & /@ {"a", "1", ".", " ", "中", "あ"} > {True, True, True, True, False, False} Note: "⺀" is unicode character U+2E80, CJK RADICAL REPEAT This hack can be with `Repeat` to ignore CJK strings StringCases[ "the quick fox...んは本当に日本語を勉強していますか...jumped", Repeated[_?(ToCharacterCode[#][[1]] < leastCJK &)], Overlaps -> False] > {"the quick fox...", "...jumped"}