Я пытаюсь проверить строку с помощью регулярного выражения, и эта проверка должна пройти, только если строка содержит только * h, * d, * w и / или * m, где * может быть любым числом.
Пока у меня есть это:
Pattern p = Pattern.compile("([0-9]h)|([0-9]d)|([0-9]w)|([0-9]m)");
Matcher m = p.matcher(strToCheck);
if(m.find()){
//matching succesful code
}
И он работает, чтобы обнаружить, есть ли какие-либо комбинации цифр и букв, присутствующие в проверенной строке, но это также работает, если ввод,например, "12x5d", потому что в нем есть "5d".Я не знаю, если это проблема с кодом или регулярное выражение.Есть ли способ добиться того, чего я хочу?
РЕДАКТИРОВАТЬ: Спасибо за ваши ответы до сих пор, но по запросу я постараюсь немного уточнить.Строка типа "1w 2d 3h" или "1w 1w" является допустимой и должна пройти, но что-то вроде "1w X 2d 3h", "1wX 2d" или "wdh" должно завершиться неудачей.