Я использую JavaScript .split()
для разделения параметров URL.Regex: соответствие «&» только в том случае, если рядом с буквенно-цифровыми символами
Можно ли использовать Regex для сопоставления &
тогда и только тогда, когда он существует рядом с буквенно-цифровыми символами?
Пример:
Не Match:?category=Health+&+Wellness
Match: ?category=Health&Wellness
Не соответствует первому, соответствует второму:?category=Health+&+Wellness&tag=Diet
Я используя сценарий, который вытягивает параметры из URL-адреса из атрибута data-url
в моем веб-шаблоне. Это фрагмент сценария параметров.
var query = decodeURIComponent(str).match(/[#|?].*$/g),
ret = {};
if (query) {
query = query[ 0 ].replace(/^\?|^#|^\/|\/$|\[|\]/g, "");
query = query.split("&");
for (var i = query.length; i--;) {
var pair = query[ i ].split("="),
key = pair[ 0 ],
val = pair[ 1 ];
if (ret[ key ]) {
if ({}.toString.call(ret[ key ]) !== "[object Array]") {
ret[ key ] = [ ret[ key ] ];
}
ret[ key ].push(val);
} else {
ret[ key ] = val;
}
}
}
Проблема с моим текущим кодом в split()
линии. Сейчас он разбивает параметры вроде Health+&+Wellness
, которых я не хочу.
' & 'сохраняется в формате URI. Вы должны либо urlencode uri's, то «Health & Wellness» станет чем-то вроде категории? = Health +% 26 + Wellness' или замените его чем-то другим, например '? Category = Health + и + Wellness' и преобразуйте его обратно и вперед. – ankhzet
Я думаю, вам нужно '/ \ b & \ b/g' (если alphanum и' _' должны быть с обеих сторон) или '/ \ b & | & \ b/g' (если словальные символы требуются только с одной стороны) –
Что делать, если я пробую эту категорию: 'm & m's'? – zessx