Как насчет чего-то вроде
decodeURI(window.location.search).replace(/\D/g, '')
Поскольку ваш window.location.search
кодируется URI, мы начинаем с его декодирования. Затем замените все, что не является числом ни с чем. Для вашего конкретного URL он вернет 2
Правка для ясности:
Местоположение вашего примера http: //localhost/index.html? John% 20jacob % 202? # 12345 состоит из нескольких частей, но интересной здесь является часть после ?
и до #
.
В Javascript этой интересной части строка запроса (или search
), доступен через window.location.search
. Для вашего конкретного местоположения window.location.search
вернется ?john%20jacob%202?
.
%20
- это кодированное URI-пространство. Чтобы декодировать (то есть удалить) все кодировки URI, я сначала запускаю строку search
через функцию decodeURI. Затем я заменяю все, что не является числом в этой строке, с пустой строкой, используя регулярное выражение.
Регулярное выражение /\D/
соответствует любому символу, который не является числом, а g
является модификатор, указывающий, что я хочу совместить все (а не просто останавливаться после первого совпадения), в результате получится 2
.
Вам нужны геттеры и сеттеры для каждого поля, которое вы хотите выставить. Вы можете использовать @Data из проекта lombok, чтобы избежать стандартного кода. https://projectlombok.org/