我正在尝试验证字符串是否与以下模式“12:24:35”匹配,这是我用来执行此操作的代码:
if (!Regex.IsMatch(textbox_TiempoDePrueba.Text, @"^[0-9]{2}\:\[0-9]{2}\:\[0-9]{2}$"))
{
//do something if there's not match
}
问题是,当textbox_TiempoDePrueba.Text为“00:00:10”时,不匹配。 我是新用的Regex.IsMatch,我不知道我的代码有什么问题,因为我从未得到过匹配。
答案 0 :(得分:2)
您正在转义模式中的[
括号。去掉它;并且模式应该有效:
if ( !Regex.IsMatch(textbox_TiempoDePrueba.Text, @"^[0-9]{2}\:[0-9]{2}\:[0-9]{2}$") )
另一种模式是:
if ( !Regex.IsMatch(textbox_TiempoDePrueba.Text, @"^([0-9]{2}\:){2}[0-9]{2}$") )
答案 1 :(得分:0)
您的正则表达式对于转义括号看起来很好,将\[
更改为[
,
此外,您正在检查正则表达式是否与!
匹配,这是您真正想要的吗?
如果您不需要先验证时间,可以使用:
try {
if (Regex.IsMatch(textbox_TiempoDePrueba.Text, @"^[\d]{2}:[\d]{2}:[\d]{2}$")) {
// Successful match
} else {
// Match attempt failed
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
正则表达式解释:
^[\d]{2}:[\d]{2}:[\d]{2}$
Assert position at the beginning of the string «^»
Match a single character that is a “digit” «[\d]{2}»
Exactly 2 times «{2}»
Match the character “:” literally «:»
Match a single character that is a “digit” «[\d]{2}»
Exactly 2 times «{2}»
Match the character “:” literally «:»
Match a single character that is a “digit” «[\d]{2}»
Exactly 2 times «{2}»
Assert position at the end of the string, or before the line break at the end of the string, if any «$»