Каким будет регулярное выражение URL домена "www.google.com"? - PullRequest
1 голос
/ 31 мая 2019

Каким будет регулярное выражение для RegularExpressionValidator в asp.net для доменного имени, например "www.google.com"?

Действительные случаи:

  1. www.google.com
  2. www.youwebsite.com

Недопустимые случаи:

  1. http://www.google.com
  2. https://www.google.com
  3. google.com
  4. www.google

В настоящее время я использовал (?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9], но он не работает для недопустимых дел 3 и 4.

Ответы [ 3 ]

1 голос
/ 31 мая 2019

Шаблон, который вы пробовали, завершается неудачно для третьего и четвертого неверных случаев, потому что в целом вы соответствуете a-z0-9, а затем повторяете 1+ раз ., а затем a-z0-9, что не учитывает www.

Если вы хотите сохранить ваш шаблон, вы должны убедиться, что он начинается с www.

^www\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$

Regex demo

Вы можете сократить свой шаблон и сделать сравнение немного шире:

^www\.[a-z0-9-]+(?:\.[a-z0-9-]+)*\.com$

Regex demo

Вы всегда можете расширить класс символов, если хотите разрешить сопоставление большего количества символов.

0 голосов
/ 31 мая 2019

Предполагая, что у нас будут действительные ULR, как указано в списке, мы можем начать с простого выражения, такого как:

^www\..+\.com

Демо 1

Затем мы можемдобавьте дополнительные границы, если хотите.Например, мы могли бы добавить класс char и конечную привязку, например:

^www\..+\.com$
^www\.[A-Za-z_]+\.com$

Demo 2

Если необходимо, мы продолжим добавлять дополнительные ограничения и тестировать:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"^www\.[A-Za-z_]+\.com";
        string input = @"www.google.com
www.youwebsite.com

http://www.google.com
https://www.google.com
google.com
www.google";
        RegexOptions options = RegexOptions.Multiline;

        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here

0 голосов
/ 31 мая 2019

Это соответствует части, которую вы хотите.

\bwww\.[a-zA-Z0-9]{2,256}\.com\b

enter image description here

Но более простой способ использовать такой простой шаблон - использовать Начинается с , Заканчивается с , а затем проверяется, что находится между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...