我是Asp.Net的新手,我想使用regularexpressionvalidator验证SSN。在正则表达式验证器中,我将正则表达式指定为:
ValidationExpression="\d{3}-\d{2}-\d{4}"
我的正则表达式效果很好。它说的是3位数字-然后是2位数字-然后是4位数字。
但是,我也希望当文本框为空或文本框仅包含以下内容时,正则表达式成功:
_ _-_-_ _ _ _
_代表“空格”(不是_。我已经展示了_,以便编辑器可以在SO上显示它)。
如何使用Regularexpressionvalidator做到这一点?
请您参考如下方法:
此模式应满足所有三个用例:
^([ ]{3}-[ ]{2}-[ ]{4}|\d{3}-\d{2}-\d{4})$
我在上面的字符数组而不是
\s中使用了文字空间,因为
\s还会匹配制表符,换行符和其他空白字符。同样,重要的是要使空格和数字测试分开,而不是在同一子模式中,否则您将匹配
123-__-6_8_之类的垃圾输入。
编辑:@Dan在他的答案中正确地指出^和$应该包围整个模式,以便我们匹配整个字符串,而不仅仅是在其中找到SSN。
