“ www.google.com”域名URL的正则表达式是什么?

时间:2019-05-31 04:49:32

标签: c# regex

在asp.net中,域名“ www.google.com”之类的RegularExpressionValidator的正则表达式是什么?

有效案例:

  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 个答案:

答案 0 :(得分:1)

您尝试的模式在无效案例的第三个和第四个案例中失败了,因为通常您匹配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

如果要允许匹配更多字符,可以始终扩展字符类。

答案 1 :(得分:0)

这与您想要的部分匹配。

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

enter image description here

使用这种简单模式的更简单方法是使用StartsWithEndsWith,然后检查两者之间的内容。

答案 2 :(得分:0)

假设我们将列出有效的ULR,我们可以从一个简单的表达式开始,例如:

^www\..+\.com

Demo 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