@belyaevcyrill

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

Есть некий адрес domain.com/. Как правильно написать регулярное выражение, чтобы оно срабатывало только на строки "domain.com" и "domain.com/test.html"? На другие строчки оно срабатывать не должно. Т.е., например, строка "domain.com/blabla.html" будет игнорироваться.

Попробовал так, но закончить не могу:
http\:\/\/domain\.com\/(?!test\.html)

Спасибо!
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Немножечко быдло-регулярка, но результат кода:

/* @var string Регулярное выражение для проверки */
$regex = '#^http(s?):\/\/domain\.com\/?(index\.html|test\.html)?$#';

/* @var array Проверяемые варианты */
$arVariant = [
	'http://domain.com',
	'https://domain.com',
	'http://domain.com/',
	'https://domain.com/',
	'http://domain.com/index.html',
	'https://domain.com/index.html',
	'http://domain.com/test.html',
	'https://domain.com/test.html',
	'http://domain.com/blabla.html',
	'https://domain.com/blabla.html',
	'https://domain.com/test.html?page=1',
];

foreach( $arVariant as $variant )
{
	if ( preg_match($regex, $variant) )
	{
		echo "Ссылка '{$variant}' не прошла валидацию".PHP_EOL;
	}
}


Следующий:

Ссылка 'http://domain.com' не прошла валидацию
Ссылка 'https://domain.com' не прошла валидацию
Ссылка 'http://domain.com/' не прошла валидацию
Ссылка 'https://domain.com/' не прошла валидацию
Ссылка 'http://domain.com/index.html' не прошла валидацию
Ссылка 'https://domain.com/index.html' не прошла валидацию
Ссылка 'http://domain.com/test.html' не прошла валидацию
Ссылка 'https://domain.com/test.html' не прошла валидацию
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы