Javascript регулярное выражение, чтобы найти строку и извлечь ее из всей строки - PullRequest
0 голосов
/ 28 января 2019

У меня есть массив строк Javascript, содержащий URL-адреса, такие как:

http://www.example.com.tr/?first=DSPN47ZTE1BGMR&second=NECEFT8RYD
http://www.example.com.tr/?first=RTR22414242144&second=YUUSADASFF
http://www.example.com.tr/?first=KOSDFASEWQESAS&second=VERERQWWFA
http://www.example.com.tr/?first=POLUJYUSD41234&second=13F241DASD
http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD

Я хочу извлечь "первые" значения параметров запроса из этих URL-адресов.

Я имею в виду, что мне нужны значения DSPN47ZTE1BGMR, RTR22414242144, KOSDFASEWQESAS, POLUJYUSD41234, 54SADFD14242RD

Поскольку я плохо использую регулярное выражение, я не смог найти способ извлечь эти значения из массива.Любая помощь будет оценена

Ответы [ 4 ]

0 голосов
/ 28 января 2019

Вместо использования регулярных выражений, почему бы просто не создать объект URL из строки и изначально извлечь параметры?

let url = new URL("http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD");
console.log(url.searchParams.get("first")); // -> "54SADFD14242RD"

Если вы не знаете имя первого параметра, вы все равно можете вручную искать строку запроса, используя конструктор URL.

let url = new URL("http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD");
console.log(url.search.match(/\?([^&$]+)/)[1]); // -> "54SADFD14242RD"

Индекс поиска представляетположение параметра (с нулевым индексом, являющимся всей совпадающей строкой).Обратите внимание, что .match возвращает null при отсутствии совпадений, поэтому приведенный выше код выдаст ошибку, если в URL нет параметров.

0 голосов
/ 28 января 2019

Нужно ли использовать регулярное выражение?Хотелось бы что-то вроде следующей работы:

var x = 'http://www.example.com.tr/?first=DSPN47ZTE1BGMR&second=NECEFT8RYD';
x.split('?first=')[1].split('&second')[0];
0 голосов
/ 28 января 2019

Вы можете использовать

(?<=\?first=)[^&]+? 
  • (?<=\?first=) - положительный взгляд, чтобы соответствовать ?first=
  • [^&]+? - Соответствует любому символу до & (ленивыйmode)

Демонстрация

Без позитивного взгляда позади вы делаете вот так

let str = `http://www.example.com.tr/?first=DSPN47ZTE1BGMR&second=NECEFT8RYD
http://www.example.com.tr/?first=RTR22414242144&second=YUUSADASFF
http://www.example.com.tr/?first=KOSDFASEWQESAS&second=VERERQWWFA
http://www.example.com.tr/?first=POLUJYUSD41234&second=13F241DASD
http://www.example.com.tr/?first=54SADFD14242RD&second=TYY42412DD`

let op = str.match(/\?first=([^&]+)/g).map(e=> e.split('=')[1])

console.log(op)
0 голосов
/ 28 января 2019

Попробуйте это регулярное выражение:

first=([^&]*)

Захват содержимого группы 1

Нажмите для демонстрации

Код

Объяснение:

  • first= - совпадения first=
  • ([^&]*) - соответствует 0+ вхождениям любого персонажа, который не является &, и сохраняет его в группе 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...