如何在vb.net中进行正则表达式

Dar*_*ght 1 regex vb.net asp.net

因此,围绕正则表达式的主题有很多问题和答案.不足之处是,绝大多数的答案是简单正则表达式...

我也用谷歌搜索 - 并发现了数百个网站.试图通过一切来快速理解和实现答案并不容易.它们要么使用不同的语言 - 这可能不会有任何区别,尽管你在C#中以不同的方式逃避VB,这导致了对于什么是转义字符与正则表达式开关的混淆.

我正在努力的部分是理解它们,所以我可以实现一些显而易见的简单表达式.

我的情景:

我必须检查给定字符串中的每个字符,如果正则表达式不允许任何字符,那么它应该返回false.

例:

我尝试了以下表达式(在这里复制/粘贴各种答案....)

Dim r As New Regex("^[a-zA-Z0-9 ]*$")
Run Code Online (Sandbox Code Playgroud)

也试过了

Dim r As New Regex("[a-zA-Z0-9\s]")
Run Code Online (Sandbox Code Playgroud)

也试过了

Dim r as New Regex("^[A-Za-z0-9 ]*")
Run Code Online (Sandbox Code Playgroud)

我一直在实现这个:

Dim r As New Regex(_fontJIAdieuxRegEx) '' where _fontJIAdieuxRegEx is one of the above regex strings.
Dim supported = r.IsMatch(fontName)
Run Code Online (Sandbox Code Playgroud)

我一直在尝试验证以下内容:

darren 应该回来 True

da-rrenFalse由于-连字符应返回

da rren 应该回来 True

现在,简单地说,这些表达式中的任何一个都将返回True所有字符串或False所有字符串; 所以我显然做错了什么.

我真正欣赏的是有人指出我出错的地方,并解释一下正则表达式的构成.

一旦我理解了它们,我需要能够有不同的表达式来允许其他字符,例如!@"'等等.请不要只是粘贴表达式来解决上面的简单示例.

Guf*_*ffa 6

第一种模式是正确使用的模式.如果字符串中只有一个字符匹配,则第二个模式将返回true.如果字符串开头的零个或多个字符匹配,则第三个模式将返回true,它始终如此.

我不知道你做了什么让它不起作用,但使用它像这样工作:

Dim _fontJIAdieuxRegEx As String = "^[a-zA-Z0-9 ]*$"

Dim r As New Regex(_fontJIAdieuxRegEx)

Console.WriteLine(r.IsMatch("darren"))
Console.WriteLine(r.IsMatch("da-rren"))
Console.WriteLine(r.IsMatch("da rren"))
Run Code Online (Sandbox Code Playgroud)

输出:

True
False
True
Run Code Online (Sandbox Code Playgroud)

  • “^”字符是字符串开头的_锚_。请小心,因为这个字符在不同的地方使用时可能有不同的含义。这里的“*”字符意味着匹配表达式的前面部分零次或多次,而“$”字符是另一个_anchor_,这次是到字符串的末尾。总而言之,它们意味着在字符串的开头匹配该集合零次或多次,一直到字符串的末尾。 (2认同)