ここで範囲を使用する:http://en.wikipedia.org/wiki/Japanese_writing_system
>>> import re
>>> kanji = map(unichr, range(0x4e00, 0x9fbf + 1))
>>> katakana = map(unichr, range(0x30a0, 0x30ff + 1))
>>> hiragana = map(unichr, range(0x3040, 0x309f + 1))
>>> japanese = ''.join(kanji + katakana + hiragana)
>>> pattern = r'^[%s\s]+$' % japanese
>>> re.compile(pattern, re.U).match('スポーツ'.decode('utf8'))
<_sre.SRE_Match object at 0x9e6a090>
>>> re.compile(pattern, re.U).match('スポーツtest'.decode('utf8'))
>>>
もちろんこれはPythonです。うまくいけば、選択した言語に合わせて変更できます。
おそらく重要なのは、アンカー^と$を使用して、文字列全体が一致していることを確認することです。[a-zA-Z] *がすべての用語に一致する理由は、「*」が「0以上」を意味するためです。また、UTF-8にエンコードされている場合は一致しないため、入力文字列は必ずデコードしてください。この場合、正規表現エンジンに\ w、\ W、\ b、\ Bを決定するように要求していないため、「U」フラグは実際には必要ありません。
また、質問を読み直した後、入力にスペースが含まれることはないので、正規表現の「\s」を取り除くことができます。