我RegularExpressionValidator.ValidationExpression
应该使用什么来只允许像 ICQ UIN 这样的输入?
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
即用破折号作为分隔符而没有。
您可以使用以下简单表达式。
^([0-9]-?){7,8}[0-9]$
缺点是,它允许像1-2-3-4-5-6-7-8
. 如果你想更多地限制布局,你可以使用更复杂的表达式。
^(?=([0-9]-?){8,9})([0-9]{2,3}-?)*(?<!-)$
此表达式使用肯定的前瞻断言断言字符串恰好包含八个或九个数字和一些破折号(?=([0-9]-?){8})
。然后它匹配由破折号分隔的两个或三个数字的组,最后使用 assertion 后面的否定外观断言字符串不以破折号结尾(?<!-)
。
这仍然允许一些不规则的模式,如12-34567-89
. 如果您也想消除它们,则必须列出所有允许的模式。但我建议不要这样做,而是允许尽可能多的灵活性——我将允许每个字符串包含八个或九个数字和任意数量的破折号——甚至--123---4-5-67--8
然后以预定义的格式重新格式化用户输入。
^(-*[0-9]-*){8,9}$