我有一个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
答案 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)
感谢您的回答。抱歉这个愚蠢的错误。