1

Тема: Витягнути частину адреси через регулярні вирази

Маю таку частину адреси

gateway/?redirect=[URLENCODE('https://site.co/?payment_plan_id=PAYMENT_PLAN')]

Як через regexp витягнути потрібну частину, а саме PAYMENT_PLAN ?

2

Re: Витягнути частину адреси через регулярні вирази

Regex look ahead, look before

3

Re: Витягнути частину адреси через регулярні вирази

наприклад так

let s = "gateway/?redirect=[URLENCODE('https://site.co/?payment_plan_id=PAYMENT_PLAN')]";
let res = s.match(/_plan_id=(.*)\'\)/);
console.log(res[1]);

https://jsfiddle.net/wwtaubvo/

Подякували: 0xDADA11C7, karmeljuk2

4

Re: Витягнути частину адреси через регулярні вирази

karmeljuk, ви не новачок на цьому форумі, а задаєте питання як новачок. - Де ви показали, що якось намагались вирішити самостійно це, прямо скажемо, елементарне завдання?

А взагалі, можна використовувати https://regex101.com/, там ліворуч необхідно вказати, що ви хочете використовувати регулярні вирази саме для JavaScript.

У вашому випадку - у верхній інпут вставляєте, наприклад

/_plan_id=(.*)\'\)/

у нижній

gateway/?redirect=[URLENCODE('https://site.co/?payment_plan_id=PAYMENT_PLAN')]

Праворуч є пояснення.

Подякували: karmeljuk1

5

Re: Витягнути частину адреси через регулярні вирази

ktretyak - регулярні вирази це те, що складно піддається моєму розумінню, ми з ними в повній дисгармонії ))
Ті варіанти, котрі я пробував https://regexr.com/3gvqe . В даному випадку мені було не зрозуміло, як обрізати останні 3 символи

6

Re: Витягнути частину адреси через регулярні вирази

Забув, що JS іще не вміє робити "look behind", поки може бути хіба що ось так:

payment_plan_id.*(?=')

де

(?=')

- це "look ahead", тобто пошук до одинарної лапки

Подякували: karmeljuk1