如何检查RegEx是否具有正确的语法?

时间:2013-09-11 07:34:11

标签: .net regex vb.net

我想知道RegEx类中是否存在任何方法来检查表达式是否具有有效的语法。

如果正则表达式匹配字符串或类似的东西,我并不意味着“IsMatch”或“Success”方法对我没有帮助。

要理解我,例如在对此表达式使用RegEx.Match方法时,它会抛出异常,因为表达式的语法无效:

"\\\" 

(没有双引号)

我已经检查了正则表达式类方法,但我找不到任何像“tryparser”。

然后检查表达式是否具有有效的语法我正在这样做:

Try
    Regex.Match(String.Empty, "\")
    Return True
Catch
    Return False
End Try

我想知道是否可以通过直接从regex类中的方法返回值或将regex类方法的结果转换为boolean来简化代码。

  

更新:

我在执行时创建了RegEx,对我的外部工具没有帮助。

enter image description here

2 个答案:

答案 0 :(得分:5)

从技术上讲,你可以使用Regex的构造函数......

Private Shared Function IsRegexValid(str As String) As Boolean
    Dim result As Boolean
    Try
        Dim rx as Regex = New Regex(str)
        result = True
    Catch ex As ArgumentException
        result = False
    End Try
    Return result
End Function

或构建Regex对象或返回Nothing ...

的方法
Private Shared Function TryBuildRegex(str As String) As Regex
    Dim result As Regex
    Try
        result = New Regex(str)
    Catch ex As ArgumentException
        result = Nothing
    End Try
    Return result
End Function

然后

Dim isvalid As Boolean = IsRegexValid("\")

Dim rx As Regex = TryBuildRegex("\")

If rx IsNot Nothing Then
End If

答案 1 :(得分:1)

除非您动态创建正则表达式,否则可以使用ExpressoThe Regulator之类的工具。

它们既非常好又有用,它们还可以帮助您构建表达式或分析现有表达式。