正则表达式无法正常工作

时间:2016-05-31 12:48:29

标签: c# .net regex vb.net validation

我有一个Windows窗体,我有一个文本框。我想使用正则表达式检查插入的文本是否包含除以下内容之外的任何其他字符:

  1. 字母字母[a-z]或[A-Z]
  2. 数字,0-9
  3. _(下划线)或。 (点)
  4. 我写过这行代码似乎不能正常工作 在VB.NET / C#:

    Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")
    

    我希望例如创建一个如下变量:
    C#

    bool isValid = Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")
    

    VB

    Dim isValid As Boolean = Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")
    

    我缺少什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$")

修改:

由于您尝试验证域名,因此更好的解决方案是使用here所述的解决方案:

// 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;
}

答案 1 :(得分:1)

你忘记了下划线和破折号:

bool isValid = Regex.IsMatch(txtCreateDomain.Text, "^[a-zA-Z0-9_.-]*$")

答案 2 :(得分:0)

/^\w+$/

\w is equivalent to [A-Za-z0-9_]