field1 & field2 не могут быть целыми числами
(?!\p{Digit}+\b)
они должны быть буквенно-цифровыми
и предположительно непустыми
\p{Alnum}+
они не должны начинаться с одного и того же символа
требует захвата первого символа в группе захвата, поэтому приведенное выше становится
(\p{Alnum})\p{Alnum}*
и вынужен негативный взгляд
(?!\1)
Собрав все вместе и разрешая разделение, вы можете использовать следующее
Pattern.compile("^\\s*(?:(?!\\p{Digit}+\\b)(?!\1)(\\p{Alnum})\\p{Alnum}*\\s*)+\\Z");