ICQ UIN 的正则表达式
我应该使用什么RegularExpressionValidator.ValidationExpression
来只允许类似ICQ UIN的输入?
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
即使用破折号作为分隔符和不使用破折号。
What RegularExpressionValidator.ValidationExpression
should I use to allow only ICQ UIN like input?
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
i.e. with dash as separator and without.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用以下简单的表达式。
缺点是,它允许诸如
1-2-3-4-5-6-7-8
之类的内容。 如果您想更多地限制布局,可以使用更复杂的表达式。此表达式使用正向前瞻断言
(?=([0-9]-?){8})
断言该字符串恰好包含八个或九个数字以及一些破折号。 然后,它匹配由破折号分隔的两个或三个数字组成的组,最后使用断言后面的否定查找(? 断言该字符串不以破折号结尾。
这仍然允许一些不规则的模式,例如
12-34567-89
。 如果您也想消除它们,则必须列出所有允许的模式。 但我建议不要这样做,而是允许尽可能多的灵活性 - 我允许每个字符串包含八个或九个数字以及任意数量的破折号 - 甚至--123---4-5-67--8
,然后以预定义的格式重新格式化用户输入。You can use the following simple expression.
The drawback is, that it allows things like
1-2-3-4-5-6-7-8
. If you want to restrict the layout more, you can use complexer expressions.This expression asserts that the string contains exactly eight or nine numbers and some dashes using the positive look ahead assertion
(?=([0-9]-?){8})
. Then it matches groups of two or three numbers optionaly separated by dashes and finally asserts that the string does not end with a dash using the negative look behind assertion(?<!-)
.This still allows some irregular patterns like
12-34567-89
. If you want to eliminate them, too, you will have to list all allowed patterns. But I suggest not to do so, but allow as much flexibility as possible - I would allow every string with eight or nine numbers and any number of dashes - even--123---4-5-67--8
and then reformt the user input in a predefined format.