Skip to main content
 首页 » 编程设计

c#之如何为正则表达式指定可选字符

2024年01月21日28tintown

我是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。