C# 正则表达式不能正常工作

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_.]*$") 编辑: 由于您正在尝试验证域名,因此更好的解决方

我有一个windows窗体,其中有一个文本框。我想使用Regex检查插入的文本是否不包含除以下字符以外的任何其他字符:

  • 字母[a-z]或[a-z]
  • 数字,0-9
  • _(下划线)或。(Dot)
  • 我写了这行代码,但似乎无法正常工作。
    在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_]