Q:

A possible bug about WordCharacter on CJK characters

According to the documentation of WordCharacter:

WordCharacter matches any character for which either LetterQ or DigitQ yields True.

However, the results of the following code seem not compatible with the doc:
StringMatchQ[#, WordCharacter] & /@ {"a", "1", ".", " ", "中", "あ"}
LetterQ[#] || DigitQ[#] & /@ {"a", "1", ".", " ", "中", "あ"}

{True, True, False, False, True, True}
{True, True, False, False, False, False}

I suppose there is a special rule to handle CJK characters, so it's the doc which should be corrected, am I right?
(As the motivation of this "discovery", I was trying to match any characters not belong to CJK.)

A:

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 used with Repeat to ignore CJK strings
StringCases[
  "the quick fox...本当に日本語を勉強していますか...jumped", 
  Repeated[_?(ToCharacterCode[#][[1]] < leastCJK &)], 
  Overlaps -> False]

{"the quick fox...", "...jumped"}

A:

Under the "Implementation Details" section of the official tutorial "Working with String Patterns" we read:

Because PCRE currently does not support preset character classes with characters beyond character code 255, the word and letter character classes (such as WordCharacter and LetterCharacter) only include character codes in the Unicode range 0–255. Thus LetterCharacter and _?LetterQ do not give equivalent results beyond character code 255.

The above-cited Documentation section wasn't updated since Mathematica version 5.2 (July-2005), and shouldn't be correct anymore because starting from PCRE version 8.32 (30-November-2012) the latter supports Unicode:

PCRE_UCP
This option changes the way PCRE processes \B, \b, \D, \d, \S, \s, 
  \W, \w,  and  some  of  the POSIX character classes. By default, only
  ASCII characters are recognized, but if PCRE_UCP is set,  Unicode 
  properties are  used instead to classify characters. More details are
  given in the section on generic character types in the pcrepattern
  page. If you  set PCRE_UCP,  matching  one of the items it affects
  takes much longer. The option is available only if PCRE has been
  compiled with  Unicode  property support.
<...>
In UTF-8 (UTF-16, UTF-32) mode, characters with values greater than 255 (0xffff)  can be included in a class as a literal string of data units, or by using the \x{ escaping mechanism.

Starting from Mathematica version 10 the two lines of code in the question produce identical results but in general these tests are different, and (as of Mathematica version 11.1.0) the results aren't the same for 705 characters from the Unicode table as one can see from the following:
unicode = FromCharacterCode /@ Range[0, 65276];
test1 = StringMatchQ[#, WordCharacter] & /@ unicode;
test2 = LetterQ[#] || DigitQ[#] & /@ unicode;
Pick[unicode, MapThread[Unequal, {test1, test2}]]

