使用RegEx的灯开关验证错误

时间:2014-07-01 17:04:08

标签: regex visual-studio-lightswitch lightswitch-2013

我有一个NIF属性,就像SSN一样,但在西班牙,格式可以是:

A0000000A  
00000000A  
A00000000

其中 A 代表字母数字 0 代表数字。无论如何,它必须是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

2 个答案:

答案 0 :(得分:0)

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

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

由于\\b\b,因此^ $分别是^bwd{7}wb$两次并不真正需要。

由解释的Visual Basic代码定义的正则表达式字符串是{{1}}。

答案 1 :(得分:0)

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

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

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