@accountnujen

Почему не регуляркой находится кириллический домен и как учитывать домены 2 уровня?

Я хочу найти в тексте все ссылки и обернуть их в тег <a>. Ссылки у меня могут иметь вид: https://google.com, www.google.com, google.com, гугл.рус, поиск.гугл.рус.

На пару с chatgpt удалось добиться только вот такого результата:
[CODE]\b[A-Za-zА-Яа-яЁё]*[A-Za-zА-Яа-яЁё]+[.][A-Za-zА-Яа-яЁё]{2,}\b[/CODE]
https://regex101.com/r/4QwNjk/1

Логика была изначально такой: найти всё, что разделено точкой, так как привязываться к https или к www не хочется.

В данном случае, почему то не находится гугл.рус, хотя кириллица указана и от 2 символов...
Как захватывать всё то, что находится до точки (включая http://) - не знаю, а gpt меня не понимает.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
@d-sem
Потому что \b и \w классы базируются на ASCII кодировке, которая не применима к unicode.

Поэтому Вам нужно что-то типа такого:

/(?:(?<=[\s,.:;"']|^)|\b)[0-9a-zа-яё]+(?:[.][0-9a-zа-яё]{2,})+(?:(?=[\s,.:;"']|$)|\b)/gi


https://regex101.com/r/Ir4Uek/4

Регулярное выражение, конечно, можно оптимизировать, но мне кажется что так наглядней
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы