У меня есть следующая строка:
<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 очень базовые, и я не могу получить то, что хочу, пожалуйста, помогите



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Альтернатива решению Рэнди Касберна с использованием регулярных выражений
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!
Хорошо, я понял, но что, если я хочу получить только pl?
Если вам нужен только код страны, попробуйте url.href.match('.*_(en|de|fr|pl).*')[1]. Посмотреть последнее обновление
Я был очень успешен раньше с такими проблемами с регулярными выражениями:
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], который является первой и единственной группой захвата регулярного выражения.
Можете ли вы опубликовать свой
.splitподход?