【发布时间】:2016-03-28 08:10:35
【问题描述】:
我想为这个特定模式创建一个正则表达式:
- 应该以 '+' 或 '-' 开头,或者什么都没有。
- 数字或小时数。它可以以 '0' 开头(例如 00 => 0 , 1 => 1 , 01 =>1, 0000089 => 89)
- 后跟':'
- 然后,分钟数。 (最多 59 个,也可以仅以 '0' 字符开头,09 => 9, 9 => 9)
这是我目前得到的:
private string regexPattern = @"^" + // Start of string (anchor)
"(" + // begin capturing group
"(+|-)?" + // "+" or "-" - is optional
"(0*)?" + // a "0" - is optional
"[0-9]*" + // accepts any number of digits
")" + // end capturing group
":" + "(" + // start capturing
"[0 - 5]" + // character between 0 and 5
"\\d" + // one digit
")" + // end group
"$"; // end of string anchor
但我遇到了语法错误:
System.ArgumentException : 解析 "^((+|-)?(0)?[0-9]+):([0 - 5]\d)$" - 量词 {x,y} 什么都没有。
我不知道我的模式是否正确创建。
任何帮助将不胜感激。
【问题讨论】:
-
您需要
escape+为\+或根据您的语言(+|-) -
您还需要删除
[0 - 5]之间的空格。应该是[0-5] -
正则表达式不是解析小时值的正确工具。正则表达式中的值具有上下文,在这种情况下有更好的工具。使用 c# 时,DateTime.TryParse 是更好的选择。识别 24 vs 34 vs 25 会让你的正则表达式变得非常复杂。