Попробуйте
^W+(R?W*X?|X?W*R?)W+$
Это не самый эффективный, но вы можете улучшить его. :) Кроме того, я не уверен, каковы ваши правила для пробелов ....
ДОПОЛНЕНИЕ
^W[W\s]*(?:R?[W\s]*X?|X?[W\s]*R?)[W\s]*W$
См. http://regexr.com? 309c6
Не забудьте, если вы используете строку Java, чтобы удвоить обратную косую черту.
Кроме того, тот факт, что пробелы могут появляться практически где угодно, заставляет меня подозревать, что функция, не основанная на регулярных выражениях, тоже подойдет. Вы всегда можете перебрать последовательность, подсчитав R и X, игнорируя пробелы, убедившись, что первый и последний символы - W, и возвращая false
, как только вы видите плохой символ или лишние R или W.