Regex 用于检查指定数字之间的数字的数据注释正则表达式
如何编写包含00:00等格式的正则表达式 在:之前的00必须是介于0-24之间的数字,在:之后的00必须是介于0-59之间的数字 我下面有我的代码,但不知为什么有些代码不能正常工作Regex 用于检查指定数字之间的数字的数据注释正则表达式,regex,asp.net-mvc-3,Regex,Asp.net Mvc 3,如何编写包含00:00等格式的正则表达式 在:之前的00必须是介于0-24之间的数字,在:之后的00必须是介于0-59之间的数字 我下面有我的代码,但不知为什么有些代码不能正常工作 [RegularExpression(@"[0-24]+:[0-59]", ErrorMessage = "Format was invalid")] 为埃克斯梅普 00:59被接受 25:60不被接受试试这个“([0-9]{1,2}}100:(1?[0-9]{1,2}200)”试试这个”([0-9]{1,2}10
[RegularExpression(@"[0-24]+:[0-59]", ErrorMessage = "Format was invalid")]
为埃克斯梅普
00:59被接受
25:60不被接受试试这个“([0-9]{1,2}}100:(1?[0-9]{1,2}200)”
试试这个”([0-9]{1,2}100:(1?[0-9]{1,2}200),
试试这个:\b:2[0-4](
带前导零:
\b(?:2[0-4]| 1\d | 0?\d):(?:5\d |[1-4]\d |[0?\d)\b
试试这个:\b(?:2[0-4]| 1?\d):(?:5\d |[1-4]?\d)\b
带前导零:
\b(?:2[0-4]| 1\d | 0?\d):(?:5\d |[1-4]\d | 0?\d)\b
为什么你需要用REGEX
来解决所有问题。你不应该把事情复杂化。分解代码。这会使你的代码更可读、更流畅
下面的方法产生了完美的匹配
public IEnumerable<string> getValues(string s)//this method returns the valid matches from s
{
Regex r=new Regex(@"\d{1,}:\d{1,}");
foreach(Match m in r.Matches(s))
{
string[] str=m.Value.Split(':');
if((int.Parse(str[0])>=0 && int.Parse(str[0])<=24) && (int.Parse(str[1])>=0&&int.Parse(str[1])<=59))
yield return str[0]+":"+str[1];
}
}
为什么你需要用REGEX
来解决每一个问题。你不应该把事情复杂化。分解代码。这会使你的代码更可读、更流畅
下面的方法产生了完美的匹配
public IEnumerable<string> getValues(string s)//this method returns the valid matches from s
{
Regex r=new Regex(@"\d{1,}:\d{1,}");
foreach(Match m in r.Matches(s))
{
string[] str=m.Value.Split(':');
if((int.Parse(str[0])>=0 && int.Parse(str[0])<=24) && (int.Parse(str[1])>=0&&int.Parse(str[1])<=59))
yield return str[0]+":"+str[1];
}
}
像这样简单的事情怎么样
[RegularExpression(@"(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])", ErrorMessage = "Format was invalid")]
它在从00:00
到23:59
的任何时间匹配。请注意,它不需要前导零,因此也将接受七点过三分钟的时间,如7:00
或7:3
(这与您提问的方式一致)
如果您希望它需要前导零,只需删除问号…像这样简单的东西怎么样
[RegularExpression(@"(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])", ErrorMessage = "Format was invalid")]
它在从00:00
到23:59
的任何时间匹配。请注意,它不需要前导零,因此也将接受七点过三分钟的时间,如7:00
或7:3
(这与您提问的方式一致)
如果您希望它需要前导零,只需删除问号…放置一些要接受的示例值和要拒绝的示例值,这将更有意义…请阅读并尝试,它肯定会帮你+1个好问题..但是你需要了解这样一个事实:时不时地使用REGEX
并不酷
。有时候做是件愚蠢的事!我想问题已经完全改变了,因为正确答案不是当前问题的答案,而我的答案是。可惜我们不能都被标记为正确的!:-)把一些样本值放在接受和拒绝的位置,会更有意义…阅读并尝试一下,它肯定会帮你+1个好问题。但是你需要了解这样一个事实:时不时地使用REGEX
并不酷
。有时这是愚蠢的事情!我想问题已经完全改变了,因为正确答案不是当前问题的答案,而我的答案是。可惜我们不能都被标记为正确的!:-)我试过了,但不幸的是它对我不起作用。我输入的任何信息似乎都是错误的,我已经尝试过了,但不幸的是,它不能为我工作。我输入的任何内容似乎都不正确,谢谢!!它似乎可以为我正常工作。你能帮我重新编辑上面的例子吗?只是想了解更多。再次感谢!谢谢它似乎可以为我正常工作。你能帮我重新编辑上面的例子吗?只是想了解更多。再次感谢!它工作得非常好!谢谢@麻烦这个正则表达式不正确!它甚至与344:523300:200匹配。请查看我的解决方案below@Anirudha:不,没有!我的正则表达式是正确的。使用在线工具尝试一下。e、 g.它与344:253、300:200不匹配。你为什么投我的票@Anirudha:那是因为它搜索了整个字符串以查找匹配项,并在较长的字符串中找到了00:30
。正则表达式就是这样工作的。它作为MVC验证正常工作,因为这要求整个字符串都是匹配的@我的错…你能编辑一下吗?这样我就可以投票了!它工作得非常好!谢谢@麻烦这个正则表达式不正确!它甚至与344:523300:200匹配。请查看我的解决方案below@Anirudha:不,没有!我的正则表达式是正确的。使用在线工具尝试一下。e、 g.它与344:253、300:200不匹配。你为什么投我的票@Anirudha:那是因为它搜索了整个字符串以查找匹配项,并在较长的字符串中找到了00:30
。正则表达式就是这样工作的。它作为MVC验证正常工作,因为这要求整个字符串都是匹配的@我的错…你能编辑一下吗?这样我就可以投票了!