Я хотел бы разумно анализировать параметры запроса URL-адреса, используя регулярное выражение.
То, что я должен был учитывать: 1) параметры могут быть не в порядке 2) только определенные параметры должны совпадать
Учитывая строку запроса: «? Param1 = test1 & param2 = test2 & parm3 = test3», я хотел бы запустить регулярное выражение javascript для анализа значения param1 и param3.
Регулярное выражение, которое я придумал до сих пор:
/(?:[?&](?:param1=([^&]*)|param3=([^&]*)|[^&]*))+$/g
Мне кажется, это регулярное выражение отлично работает на таких сайтах, как https://regex101.com/.
Однако, когда я запускаю приведенный ниже метод JS, я всегда получаю undefined для $ 2, что и должно быть для парсинга значения param1. Любая помощь или предложение?
"?param1=test1¶m2=test2¶m3=test3".replace(
/(?:[?&](?:param1=([^&]*)|param3=([^&]*)|[^&]*))+$/g,
function ($0, $1, $2, $3) { return $0 + ' ' + $1 + ' ' + $2 + ' ' + $3; });
Это возвращает $ 2 как undefined и $ 3 как test3. Однако, если я исключу как param2, так и param3 из строки запроса url, я смогу успешно проанализировать param1 как $ 2. Немного запутался в этом.
Благодарность!
['test1', 'test3']
, или вы хотите их заменить? Вы хотите заменить всю строку? - person Damon   schedule 05.11.2016replace
заменит только совпавший текст на возвращаемое значение обратного вызова. Эта группа захвата не определена, потому что вы получаете доступ только к последнему повторению этой группы чередования. tl; dr - я не вижу, чтобы это регулярное выражение решало какие-либо проблемы реального мира в том виде, в котором оно написано. Вы должны предоставить нам ожидаемый результат для любой значимой помощи :). - person Damon   schedule 05.11.2016