正则表达式用逗号只计算整个VB.NET的字符串

时间:2012-05-17 15:37:50

标签: regex windows vb.net string

我有一个这样的字符串:

正确的字符串

Dim value As String = "45, 2111,56, 1, 9, 99, 62,"

无效字符串:

Dim value As String = "10.01, 12,, . , , "

我需要无限期地评估这种格式的字符串, 正则表达式评估串联的逗号,只是整数。

2 个答案:

答案 0 :(得分:4)

这个应该有效:

^(\d+, ?)*\d*$

它允许以逗号分隔的数字列表,逗号和下一个数字之间可能有空格。也允许空列表(空字符串)。

答案 1 :(得分:1)

试试这个:

Public Function test(ByVal test_strring$) As Boolean
        Try
            Dim pattern$ = "(?s)^(\d+\s*,\s*)+$"
            ' (?s)^(\d+\s*,\s*)+$
            ' 
            ' Match the remainder of the regex with the options: dot matches newline (s) «(?s)»
            ' Assert position at the beginning of the string «^»
            ' Match the regular expression below and capture its match into backreference number 1 «(\d+\s*,\s*)+»
            '    Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
            '    Note: You repeated the capturing group itself.  The group will capture only the last iteration.  Put a capturing group around the repeated group to capture all iterations. «+»
            '    Match a single digit 0..9 «\d+»
            '       Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
            '    Match a single character that is a “whitespace character” (spaces, tabs, and line breaks) «\s*»
            '       Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
            '    Match the character “,” literally «,»
            '    Match a single character that is a “whitespace character” (spaces, tabs, and line breaks) «\s*»
            '       Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
            ' Assert position at the end of the string (or before the line break at the end of the string, if any) «$»


            Return Regex.IsMatch(test_strring, pattern, RegexOptions.None)
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return False
        End Try
    End Function