Извлечение сложной части строки с помощью простого Javascript

У меня есть следующая строка:

<a href = "https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx">Text</a>

Я хочу извлечь из этой строки с помощью JavaScript 'pl' или 'pl_company_com'

Есть несколько переменных:

  • jan_kowalski это имя и фамилия оно может меняться, а иногда даже иметь 3 элемента

  • код страны (в этом примере 'pl') изменится на другой en / de / fr (это та часть строки, которую я хочу получить)

  • остальная часть строки остается одинаковой для каждого случая (начало + все после начала с _company_com...

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

Можете ли вы опубликовать свой .split подход?

Jimenemex 19.03.2019 20:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
65
2

Ответы 2

Альтернатива решению Рэнди Касберна с использованием регулярных выражений

let out = new URL('https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx').href.match('.*_(.*_company_com)')[1];

console.info(out);

Или, если вы хотите просто получить эту строку с указанными вами кодами стран

let out = new URL('https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx').href.match('.*_((en|de|fr|pl)_company_com)')[1];

console.info(out);

let out = new URL('https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx').href.match('.*_((en|de|fr|pl)_company_com)')[1];

console.info(out);

Доказательство концепции того, что это решение также работает для других комбинаций

let urls = [
new URL('https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx'),
new URL('https://my.domain.com/personal/firstname_middlename_lastname_pl_company_com/Documents/Forms/All.aspx')
]

urls.forEach(url => console.info(url.href.match('.*_(en|de|fr|pl).*')[1]))

Гораздо лучше - отличное использование RegEx!

Randy Casburn 19.03.2019 21:03

Хорошо, я понял, но что, если я хочу получить только pl?

MattMatt 19.03.2019 21:30

Если вам нужен только код страны, попробуйте url.href.match('.*_(en|de|fr|pl).*')[1]. Посмотреть последнее обновление

Misantorp 19.03.2019 21:33

Я был очень успешен раньше с такими проблемами с регулярными выражениями:

var string = '<a href = "https://my.domain.com/personal/jan_kowalski_pl_company_com/Documents/Forms/All.aspx">Text</a>';
var regExp = /([\w]{2})_company_com/;

find = string.match(regExp);

console.info(find); // array with found matches
console.info(find[1]); // first group of regexp = country code

Сначала вы получили заданную строку. Во-вторых, у вас есть регулярное выражение, которое помечено двумя косыми чертами в начале и в конце. Регулярное выражение в основном используется для поиска строк (вы даже можете заменить им сложный текст во всех основных редакторах, что может быть ОЧЕНЬ полезно). В этом случае здесь он соответствует ровно двум символам слова [\w]{2}, за которыми непосредственно следует _company_com (\w указывает на символ слова, [] объединяет все требуемые типы символов, здесь только символы слова, а {} указывает количество символов, которые нужно найти). Теперь, чтобы найти нужную деталь, нужно вызвать string.match(regExp), чтобы получить все захваченные находки. Он возвращает массив со всей захваченной строкой, за которой следуют все группы захвата в регулярном выражении (обозначаются ()). Таким образом, в этом случае вы получаете код страны с find[1], который является первой и единственной группой захвата регулярного выражения.

Другие вопросы по теме