Вопрос:

Как я могу найти текст, содержащий URL, используя регулярное выражение?

c# regex

33 просмотра

1 ответ

1369 Репутация автора

Я пытаюсь создать метод, который будет возвращать true, если переданный текстовый параметр содержит URL-адрес. Вот что у меня так далеко:

private bool TextContainsUrl(string text)
{
  Regex rgx = new Regex(@"((http|ftp|https|www)://)?([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?");
  bool match = rgx.IsMatch(text);

  return match;
}

Я мог бы назвать это как:

TextContainsUrl("here is a text with url http://something.net bla bla.");

или же

TextContainsUrl("here is a text with no url bla bla.");

Проблема в том, что оба вышеуказанных вызова возвращают true.

Что я здесь не так делаю?

Автор: brinch Источник Размещён: 08.11.2017 10:09

Ответы (1)


1 плюс

541 Репутация автора

Решение

Снимите квадратные скобки, [\w+?\.\w+]и все будет хорошо. Символы в квадратных скобках сопоставляются в любом порядке.

Попробуйте это здесь: https://regex101.com/r/X2nUNA/1

Автор: omijn Размещён: 08.11.2017 10:21
Вопросы из категории :
32x32