0

我有一个 NIF 属性,类似于 SSN,但在西班牙,格式可以是:

A0000000A  
00000000A  
A00000000

其中A代表Alphanumeric0代表Digits。无论如何,它必须是 9 个字符。

使用 Visual Studio 2013 LightSwitch 我尝试使用 RegEx 对其进行验证。
我为这种情况编写的正则表达式是

^\b\w\d{7}\w\b$

我已经在几个网站上进行了测试,到目前为止,RegEx 可以正常工作。

但是当我运行应用程序时,输入有效数据它不起作用并且验证错误出现在屏幕上。
这是验证代码:

Private Sub NIF_Validate(results As EntityValidationResultsBuilder)

    Dim pattern As String = "^\b\w\d{7}\w\b$"

    If (NIF IsNot Nothing) AndAlso (Not Regex.IsMatch(pattern, NIF)) Then
            results.AddPropertyError("Check NIF")
    End If

End Sub
4

2 回答 2

0

反斜杠是字符串中的转义字符。因此,您需要将模式字符串定义为

"^\\b\\w\\d{7}\\w\\b$"

由于和 ,因此这里两次并不真正\\b需要。\b^$

由您的 Visual Basic 代码定义的正则表达式字符串解释为^bwd{7}wb$.

于 2014-07-01T18:39:57.463 回答
0

最后,经过数小时审查代码后,我发现了错误。它Regex.IsMatch的第一个参数必须是文本,第二个参数必须是模式。

Regex.IsMatch(input As String, pattern As String)

感谢您的回答。并为这个愚蠢的错误感到抱歉。

于 2014-07-02T15:26:52.557 回答