在asp.net中,域名“ www.google.com”之类的RegularExpressionValidator的正则表达式是什么?
有效案例:
无效案例:
当前我使用了(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]
,但是对于无效的3号和4号案例却失败了。
答案 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]$
您可能会缩短模式并使匹配范围更广:
^www\.[a-z0-9-]+(?:\.[a-z0-9-]+)*\.com$
如果要允许匹配更多字符,可以始终扩展字符类。
答案 1 :(得分:0)
答案 2 :(得分:0)
假设我们将列出有效的ULR,我们可以从一个简单的表达式开始,例如:
^www\..+\.com
然后,如果需要,我们可以添加其他边界。例如,我们可以添加char类和结束锚,例如:
^www\..+\.com$
^www\.[A-Za-z_]+\.com$
如有必要,我们将继续添加更多约束条件并进行测试:
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);
}
}
}
jex.im可视化正则表达式: