Если я хорошо понимаю, что-то в этом роде:
^([0-9]+[dD]|[1-9]\d*[mMwWyY])$
Это будет соответствовать любому числу с суффиксом d или D, и только числу, начинающемуся с «1» для оставшихся. Вы также можете написать это и использовать либо (?i)
, либо Pattern.IGNORE_CASE
в качестве опции:
^([0-9]+d|[1-9]\d*[mwy])$
Если вам нужны совпадения (0) и совпадения (1), как описано в вашем комментарии:
^([0-9]+(?=[dD])|[1-9]\d*)([dmwyDMWY])$
Положительное прогнозное утверждение будет работать только с d / D, как предполагалось, поэтому оно будет 0d
, но не 0y
.