Я пытаюсь проверить URI системы с помощью регулярного выражения для определения параметров в середине URI REST API, однако у меня возникают проблемы с проверкой параметров в конце URI, например:
В базе я получаю правило для URI: /uaa/api/users/*/city/*
Замените '*' на регулярное выражение, чтобы оно принимало любой символ между / или после /: ^/uaa/api/users/+(.*)+/city/+(.*)$
Я сравниваю URI с регулярным выражением с URI запроса: /uaa/api/users/john.connor/city/12
Но если я удалю значение в конце URI и оставлю только /, он принимает то, что мне нужно, чтобы он потерпел неудачу, потому что после / нет значения, то есть при использовании регулярного выражения ^/uaa/api/users/+(.*)+/city/+(.*)$ с URI /uaa/api/users/john.connor/city/ мне нужно, чтобы терпит неудачу, потому что после / нет значения. Как я могу сделать так, чтобы он не принимал бесполезный бар, за которым следует в конце?
Я не знаю, имеет ли это значение, но я использую регулярное выражение в Java!




Он содержит по крайней мере один символ из каждой из следующих категорий.
Строчные буквы Прописная буква цифра Символ
(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)
(?=.*[a-z]) // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z]) // use positive look ahead to see if at least one upper case letter exists
(?=.*\d) // use positive look ahead to see if at least one digit exists
(?=.*\W]) // use positive look ahead to see if at least one non-word character exists
Есть несколько вещей, на которые следует обратить внимание в отношении шаблона, который вы используете.
Плюс в /+ — это квантификатор в этом контексте, соответствующий 1+ косой черте. Эта часть (.*)+ также использует этот квантификатор для повторения группы, которая сама соответствует 0+ раз любому символу (включая косую черту).
Я думаю, что вы ищете, чтобы сопоставить не косую черту, используя отрицательный класс персонажей[^/]+ между косой чертой, а также для последней части, чтобы URL-адрес не мог заканчиваться косой чертой.
^/uaa/api/users/[^/]+/city/[^/]+$