Необходимо извлечь значения из строки в JavaScript между словами и символами - PullRequest
0 голосов
/ 28 июня 2019

Я получу следующий формат строки из вызова AJAX: [ссылка = https://www.w3schools.com текст = здесь]

Мне нужно извлечь значения после «link =» и значение после «text =», поэтому мой идеальный вывод - «https://www.w3schools.com"» для переменной, а затем «здесь» для переменной, как показано в код ниже. Значения для "link =" и "text =" изменятся.

Я пытался поиграть с сопоставлением с регулярным выражением и использовать .split в Javascript, но я не могу точно получить нужные значения.

var str = "[link=https://www.w3schools.com text=here]";
var link = str.match(/link=(.*)/)[1]; //gets the link but includes rest of string      
var linkText = str.match(/text=(.*)/)[1]; //gets "here" plus the closing bracket

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

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

var str = "[link=https://www.w3schools.com text=here]";
var m, res=[], rx=/(?:^|[\s[])(link|text)=([^\][\s]*)/g;
while (m = rx.exec(str)) {
  console.log(m[1], "=", m[2]);
}

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

/(?:^|[\s[])(link|text)=([^\][\s]*)/

См. Демонстрационную версию regex .

Детали

  • (?:^|[\s[]) - начало строки или пробела или [
  • (link|text) - Группа 1: ссылка или текстовые слова
  • = - = символ
  • ([^\][\s]*) - Группа 2: любые 0+ символов, кроме [, ] и пробелов.
0 голосов
/ 28 июня 2019

добавьте "\ s" и "]" в ваш шаблон, попробуйте это

var str = "[link=https://www.w3schools.com text=here]";
var link = str.match(/link=(.*)\s/)[1]; //gets the link but includes rest of string      
var linkText = str.match(/text=(.*)]/)[1];

console.log(link);
console.log(linkText);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...