C# 正则表达式不能正常工作
我有一个windows窗体,其中有一个文本框。我想使用Regex检查插入的文本是否不包含除以下字符以外的任何其他字符:C# 正则表达式不能正常工作,c#,.net,regex,vb.net,validation,C#,.net,Regex,Vb.net,Validation,我有一个windows窗体,其中有一个文本框。我想使用Regex检查插入的文本是否不包含除以下字符以外的任何其他字符: 字母[a-z]或[a-z] 数字,0-9 _(下划线)或。(Dot) 我写了这行代码,但似乎无法正常工作。 在VB.NET/C#中: 例如,我想创建一个如下所示的变量: C# VB 我缺少什么?试试这个: Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$") 编辑: 由于您正在尝试验证域名,因此更好的解决方
在VB.NET/C#中: 例如,我想创建一个如下所示的变量:
C# VB 我缺少什么?试试这个:
Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")
编辑:
由于您正在尝试验证域名,因此更好的解决方案是使用以下所述的解决方案:
或者像这样:
var valid = false;
try
{
var uri = new Uri("http://example.com/");
valid = false;
}
catch (UriFormatException){
valid = false;
}
您忘记了下划线和破折号:
bool isValid = Regex.IsMatch(txtCreateDomain.Text, "^[a-zA-Z0-9_.-]*$")
@Nasreddine如果圆点在字符类中就不会了。我今天学到了一些东西。谢谢@user6188402和lbarros。从我的正则表达式中,我希望所有这些情况都有效:domain.intern、domain1.intern、my-domain.intern@user6188402@drgmak你想验证域名吗?@Nasreddine是的,我是。如果
txtCreateDomain
是一个文本框,你应该调用txtCreateDomain.Text
而不是ToString()
。仅当文本包含所有这些内容时,此选项才会被选中,对吗?从我的正则表达式中,我希望所有这些案例都是有效的:domain.intern,domain1.intern,my-domain.internAll这些都将匹配,是的。但是,如果您想验证域名,可以查看:或Thanx,这解决了我的问题。:)很好,问题应该包含回答问题所需的所有细节。我对你的回答没有意见,只是问题本身。我对问题中的错误感到抱歉。我感谢你的帮助。Thanx代表您的时间用户6188402-Thnx代表通知我。我是新来这里的,所以没有这样做。\w相当于[A-Za-z0-9]
-默认情况下不在.NET中。
Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")
// https://stackoverflow.com/a/967610/162671
private static bool IsValidDomainName(string name)
{
return Uri.CheckHostName(name) != UriHostNameType.Unknown;
}
var valid = false;
try
{
var uri = new Uri("http://example.com/");
valid = false;
}
catch (UriFormatException){
valid = false;
}
bool isValid = Regex.IsMatch(txtCreateDomain.Text, "^[a-zA-Z0-9_.-]*$")
/^\w+$/
\w is equivalent to [A-Za-z0-9_]