Условие в регулярном выражении

110
19 сентября 2019, 15:40

Есть простое регулярное выражение:

new RegExp('('+this.name+'=).*(&)', 'g')

Нужно проверить - если строка заканчивается символом: & то взять все содержимое между = и &.

Иначе взять все до конца строки

Возможно ли такое условие?

Answer 1

Примерно так:

// дана строка 
let str = '?year=2001&hall=6&months=7' 
 
function genRE(alias) { 
    return new RegExp('(' + alias + '=)[^&]*(&|$)'); 
} 
 
//заменяем содержимое между = и (& или концом строки) 
str = str.replace(genRE('year'), "$12019$2") 
          .replace(genRE('months'), "$102$2"); 
 
console.log(str);

Answer 2

Попробуйте так:

new RegExp('\\b('+this.name+'=).*?(&|$)', 'g');

Но, возможно, вам просто нужно URLSearchParams?

READ ALSO
Преобразования string в массим

Преобразования string в массим

У нас есть строка виду:

136
Работа с connect Redux, прокидование props

Работа с connect Redux, прокидование props

Пытаюсь подключить через конект свой функциональный компонентИспользую Redux

152
Разный результат шифрования

Разный результат шифрования

Шифрую строку в java и javascriptИспользую одинаковые настройки, ключ, вектор, метод и т

125
Как указать тип для массива, который состоит из строк являющихся свойствами объекта?

Как указать тип для массива, который состоит из строк являющихся свойствами объекта?

Подскажите, пожалуйста, можно ли как то в TypeScript указать тип для массива, таким образом, что бы описать, что он может состоять только из тех...

150