Имеем строку url = 'http://site.loc/?search=abcdf';
и регулярное выражение re = /\&search\=.*?(?=\&)/g;
Только оно срабатывает, если находит за искомым словом символ "&". Если же его нет, то выражение не срабатывает.
Как мне добавить или до "&" или до конца строки "$"?
Попробуйте. Символ | - это или, также для таких поисков применяется [^&]+ - любые количеством больше 1, кроме &
console.log('http://site.loc/?search=abcdf&a=1'.match(/(\?|&)search=([^&]+)/)[2])
Я понимаю, что разбор url
был бы приемлем, но на данный момент мне нужно было регулярное выражение, которое сделало бы то, что от него требуется.
Сегодня методом изучения нашел правильное решение:
re = /&search\=((.*?)(?=&)|(.*))/g;
ищет от &search=
до следующего &
, а если не находит, то до конца строки. Вот это мне нужно было сделать.
r = /[?&]search=([^&]+)/;
console.log('http://site.loc/?search=abcdf&a=1'.match(r)[1]);
console.log('http://site.loc/?search=abcdf'.match(r)[1]);
console.log('http://site.loc/?b=1&search=abcdf'.match(r)[1]);
console.log('http://site.loc/?b=1&search=abcdf&a=1'.match(r)[1]);
// если доработать именно ваш код...
r = /&search=(.*)(?=&)*/;
// ^
console.log('http://site.loc/?b=1&search=abcdf'.match(r)[1]);
Квантификаторы можно указывать и для групп.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день, столкнулся с проблемой, у меня есть есть всплывающее окно, которое не помещается в экранеИ при попытке создать бегунок, появляется...
В этом случае цвет фона меняется плавно, а ширина - как если бы свойство transition не было бы задано, скачком