问题描述
- 正则表达式,匹配一个范围的值用分号隔开,也可以是单独的一个值
-
匹配1-31的值,可以是1,2,3,4,5 还可以是1 这样的类型 输入的值要在1到31之间;
比如输入:1,2,3,31 返回true 输入1,2,32返回false输入2返回true 输入32返回false
解决方案
void Main()
{
var arry=new string[]{"1,12,3,31",
"1",
"1,12,32",
"2",
"33",};
var reg=new Regex(@"^(([1-9]|[12]d|3[01]),)*([1-9]|[12]d|3[01])$");
foreach(var item in arry)
Console.WriteLine("{0} -- {1}",item,reg.IsMatch(item));
/*
1,12,3,31 -- True
1 -- True
1,12,32 -- False
2 -- True
33 -- False
*/
}
解决方案二:
<script>
var rx = /^([1-9]|[1-2]d|30|31)(,([1-9]|[1-2]d|30|31))*$/;
document.write(rx.test("1,2,3,31") + '<br>');
document.write(rx.test("1,0,3,31") + '<br>');
document.write(rx.test("1,2,3,33") + '<br>');
document.write(rx.test("1,2,3,23") + '<br>');
解决方案三:
(([1-2]d|30|31|4-9),)*(([1-2]d|30|31|4-9))
解决方案四:
void Main()
{
var arry=new string[]{"1,2,3,31",
"1",
"1,12,32",
"2",
"32",};
var reg=new Regex(@"^(([1-9]|(2d)|(3[01])),)*([1-9]|(2d)|(3[01]))$");
foreach(var item in arry)
Console.WriteLine("{0} -- {1}",item,reg.IsMatch(item));
/*
1,2,3,31 -- True
1 -- True
1,12,32 -- False
2 -- True
32 -- False
*/
}
解决方案五:
楼上的那些都回答了,基本都是一样的做法,
^(([1-9]|[12]d|3[01]),)*([1-9]|[12]d|3[01])$
或
^([1-9]|[1-2]d|30|31)(,([1-9]|[1-2]d|30|31))*$
都可以的
时间: 2024-08-31 23:38:48