我正在尝试编写一个正则表达式,它将字符串作为输入,并且还可以包含逗号和连字符,并在1-150范围内验证有效数字,到达下面的正则表达式,但是如果我将字符串指定为1,它将失败-151,因为它认为151中的51有效。
1,10,1-150,25 valid
0,1-10 invalid(as 0 is present)
1,2,3-151,5 invalid (as 151 is present)
10,0-4,5 invalid (as 0 is present)
我写的正则表达式
([1-9][,-])|([1-8][0-9][,-])|9[0-9][,-]|1[0-4][0-9][,-]|150[,-]
答案 0 :(得分:3)
此正则表达式将执行您想要的操作:
^(([1-9]|[1-9][0-9]|1[0-4][0-9]|150)([,-](?=\d)|$))+$
它将查找一组有效数字(1-9、10-99、100-149、150),并检查每个数字后跟,
,-
还是结尾行($
)。如果数字后接逗号或连字符,它将检查下一个字符是否为数字,以使其不匹配(例如)1,
或34-
。
答案 1 :(得分:1)
正如@ some1所说,结合使用Dropdown
Removed gutter option
Removed stopPropagation option
Call plugin on .dropdown-content instead of .dropdown-button
Change attribute data-activates to data-target
Rename classes .dropdown-button to .dropdown-trigger
Rename option belowOrigin to coverTrigger
Removed automatic initialization, initialize it manually as shown in documentation
和一点Linq会更容易阅读(后来进行更改,改进等)。至少,这是替代方法:
Split
遵循@Rawling和@Dmitry Bychenko命题
private static bool IsValid(string s)
{
return s.Split(new []{',','-'}).Select(int.Parse).All(x => x > 0 && x < 151);
}