Мне нужно разобрать эту строку "/<productId>/save"
, и я должен гарантировать, что productId является целым числом без знака 32 бит.Создание регулярного выражения для пути URI
Конечно, я мог бы разделить строку с помощью символа «/», а затем в возвращаемом массиве попытаться передать идентификатор продукта в целое число и посмотреть, получилось ли я исключение или нет, но это не кажется очень элегантным решение.
Вместо этого я попытался использовать это регулярное выражение boolean match=path.matches("\\/\\d+\\/save");
, который отлично работает, но он не соблюдает ограничение целых 32 бит, в основном я могу ввести число любого размера.
I.e строка followinf /44444444444444444/save";
соответствует регулярному выражению.
Каков более элегантный способ сделать это? Не могли бы вы порекомендовать мне какой-нибудь подход?
Самый элегантный способ явно не пытаться проверить номер с регулярным выражением (это возможно, но уродливо и неэффективно), поэтому извлеките его и проверьте с помощью простого сравнения. Если вы хотите, вы можете ограничить количество цифр в шаблоне. –
Дубликат http://stackoverflow.com/questions/20793578/regex-for-a-valid-32-bit-signed-integer – 0xA2C2A
RegEx не может использоваться для проверки интегральных границ без некоторого _really_ уродливого регулярного выражения. – Qix