我正在使用正则表达式来检查字符串与白名单。此正则表达式将尝试匹配任何帐户数据。它挂起的特定字符串是日期10/12/2015
。白名单应包含字母数字字符和这些特殊字符\
,/
,-
,@
,空格,.
,,
和#
。
Dim pattern As = "^(?=.*[A-Za-z0-9])[A-Za-z0-9\\/-@.,# _]*$"
这个特殊的正则表达式将用于VB.NET
。提前谢谢!
答案 0 :(得分:2)
您的解决方案应该是
Dim pattern As String = "^(?=.*[A-Za-z0-9])[A-Za-z0-9\\/@.,# _-]*$"
Dim s As String = "10/12/2015"
Console.WriteLine(Regex.IsMatch(s, pattern))
请参阅VB.NET demo。
您无需在.NET正则表达式模式中转义/
,并且要匹配-
,将其放在字符类的结尾或开头,或者在范围之后,或简写字符类。
<强>详情:
^
- 字符串开头(?=.*[A-Za-z0-9])
- 一个积极的先行者,需要在除换行符之外的任何0 +字符之后存在ASCII字母数字字符(LF,.*
)[A-Za-z0-9\\/@.,# _-]*
- 0个或更多ASCII字母(A-Za-z
),数字(0-9
)或\
(与\\
匹配),{{1} },/
,@
,.
,,
,空格,#
,_
字符-
- 字符串结束。要使前瞻效率更高一些,请使用principle of contrast,将$
替换为与0 +非字母数字匹配的否定字符类.*
:
[^A-Za-z0-9]*