У меня есть этот шаблон регулярного выражения для соответствия веб-сайту:

^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$

Если я протестирую его (http://www.regex101.com) со следующими значениями:

http://www.google.com 
google.com 
somesite.com

Я получаю совпадение по всем трем значениям.

Но этот код не работает на C # (совпадений нет):

var websiteRegex = new Regex(@"^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$", RegexOptions.IgnoreCase);
var stripped = stripped = phoneRegex
    .Replace("http://www.google.com www.google.com somesite.com", string.Empty);
-2
Ian Tunbridge 15 Ноя 2018 в 02:06

1 ответ

Лучший ответ

Причина проста: regex101.com автоматически применяет опцию 'MultiLine', которая необходима в вашем случае.

Ваш код должен быть:

var websiteRegex = new Regex(WEBSITE_PATTERN, RegexOptions.IgnoreCase | RegexOptions.MultiLine);
0
Poul Bak 14 Ноя 2018 в 23:36