【发布时间】:2009-07-20 07:24:21
【问题描述】:
我刚刚写了一个正则表达式来检查一个字符串是否是一个有效的数学公式。 我只是定义了一组有效字符并检查字符串是否匹配(我稍微缩短了正则表达式:
private static readonly String validFormuar = @"^[\d\+-\*\/]+$";
private static bool IsValidFormular(String value)
{
return Regex.IsMatch(value, validFormuar);
}
在本例中,我只允许使用数字、+、-、* 和 /。
因为 +,* 和 / 是正则表达式中的特殊字符,所以我对它们进行了转义。
但是,此代码会引发 ArgumentException(从德语翻译)
"^[\d\+-\*\/]+$" is beeing analyzed - [x-y]-area in reversed Order.
如果我双重转义 *
private static readonly String validFormuar = @"^[\d\+-\\*\/]+$";
结果符合预期。
这是 System.Text.RegularExpressions 解析器中的错误吗?因为我认为我的第一个正则表达式是正确的。如果不是,为什么我必须两次转义“*”?
【问题讨论】:
-
如果你看到蹄印,想想马,而不是斑马。操作系统可能没有损坏。数据库可能很好。 ——安迪·亨特和戴夫·托马斯 :)
-
@Firas:这对牛仔来说很好,但如果你住在塞伦盖蒂呢。