正则表达式,介于1和150之间的有效字符串,用逗号和连字符分隔

时间:2018-09-26 06:50:52

标签: javascript c# regex

我正在尝试编写一个正则表达式,它将字符串作为输入,并且还可以包含逗号和连字符,并在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[,-]

2 个答案:

答案 0 :(得分:3)

此正则表达式将执行您想要的操作:

^(([1-9]|[1-9][0-9]|1[0-4][0-9]|150)([,-](?=\d)|$))+$

它将查找一组有效数字(1-9、10-99、100-149、150),并检查每个数字后跟,-还是结尾行($)。如果数字后接逗号或连字符,它将检查下一个字符是否为数字,以使其不匹配(例如)1,34-

Regex101 demo

答案 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

Try it Online!

遵循@Rawling和@Dmitry Bychenko命题

private static bool IsValid(string s)
{
    return s.Split(new []{',','-'}).Select(int.Parse).All(x => x > 0 && x < 151);
}

Try it Online!