Как добавить условие в регулярное выражение?

Как можно изменить регулярное выражение для обработки ссылок в тексте так, чтобы оно учитывало только внутренние ссылки на ресурс? В тексте ссылки представлены в формате [Название](Ссылка). В результате мне нужно получить код, который будет вставлять ссылки только на внутренний ресурс, используя уже существующий шаблон. 

Вот что у меня имеется на данный момент: 
<pre><code>&lt;p dangerouslySetInnerHTML={{
	__html: text.replace(
		/\[(.+?)\]\((.+?)\)/g,
		'$2'.indexOf('site')
			? '&lt;a href="$2" target="_blank"&gt;$1&lt;/a&gt;'
			: '$1'
	),
	}}
&gt;&lt;/p&gt;</code></pre>
  • 3 апреля 2025 г. 14:04
Ответы на вопрос 2
Чтобы изменить ваше регулярное выражение, так чтобы оно обрабатывало только внутренние ссылки, вам нужно использовать условие, которое проверяет, содержит ли ссылка нужный домен. Допустим, что ваш внутренний ресурс находится на сайте `example.com`. 

Обновим ваше регулярное выражение, чтобы добавить это условие:

```javascript
<p dangerouslySetInnerHTML={{
    __html: text.replace(
        /\[(.+?)\]\((https?:\/\/(www\.)?example\.com\/[^\s]+)\)/g,
        '<a href="$2" target="_blank">$1</a>'
    ).replace(
        /\[(.+?)\]\((?!https?:\/\/(www\.)?example\.com\/)[^\s]+\)/g,
        '$1'
    ),
}}>
</p>
```

### Объяснение кода:
1. Мы используем несколько вызовов метода `.replace()`, чтобы обработать разные варианты ссылок.
2. Первое регулярное выражение `/\[(.+?)\]\((https?:\/\/(www\.)?example\.com\/[^\s]+)\)/g` находит ссылки формата `[Название](Ссылка)` и проверяет, является ли `Ссылка` внутренней (т.е. содержит www.example.com). Если это так, мы создаем тег `<a>` с правильным href.
3. Второе регулярное выражение `/\[(.+?)\]\((?!https?:\/\/(www\.)?example\.com\/)[^\s]+\)/g` означает, что мы ищем те же ссылки, которые **не** соответствуют внутреннему ресурсу. В таких случаях мы просто возвращаем текст `Название`, не создавая ссылку.

Таким образом, ваше регулярное выражение будет обрабатывать как внутренние ссылки, создавая `<a>`, так и игнорировать внешние, оставляя их в виде простого текста. Не забудьте заменить `example.com` на ваш фактический домен.
Написать в регулярку часть ссылки до нужных ресурсов.
Похожие вопросы