我必须在C#中验证一个“项目代码”字符串--字符串长度可以在5-10个字符之间。这方面的唯一规则如下:
我可以像这样验证5-10个字符的限制:
^(?=.{5,10}$)第一部分和第三部分是这样的:
[a-zA-Z0-9]{1}中间规则是这样的:
[a-zA-Z0-9.]{0,8}如果我把这些都放在一起,我就有了这个:
^(?=.{5,10}$)[a-zA-Z0-9]{1}[a-zA-Z0-9.]{0,8}[a-zA-Z0-9]{1}$它工作得很好,但是在所有这些几乎相同的代码中,它似乎可以被浓缩。有什么想法吗?谢谢!
发布于 2015-12-31 01:09:44
您可以使用
(?i)^(?!.*[.]{2})[a-z0-9][a-z0-9.]{3,8}[a-z0-9]$请参阅演示
^[a-z0-9] -第一个字符只能是一个字母或数字.)。[a-z0-9]$ -最后一个字符只能是一个字母或数字^(?!.*[.]{2}) -*避免中间连续不止一个句点当与(?i)初始化器一起使用时,可以用标志替换new Regex()内联修饰符。
发布于 2015-12-31 00:03:07
通过将中间部分3到8次匹配,并与外部部分匹配一次(不需要{1}),可以使其更短一些。这消除了对代码的5,10部分的需求,因为1+3+1=5和1+8+1=10。
^[a-zA-Z0-9][a-zA-Z0-9.]{3,8}[a-zA-Z0-9]$发布于 2015-12-31 00:11:30
我要回过头去--别回答西拉尔的问题,所以我要给他加1!我使用一个不区分大小写的标志从[a-zA-Z0-9]到[a-z0-9]
^(?i)[a-z0-9][a-z0-9.]{3,8}[a-z0-9]$谢谢各位!
https://stackoverflow.com/questions/34539091
复制相似问题