C# XML属性的可能值的正则表达式
我有一个XML属性,它有两个可能的值:DiscardorOld和DiscardorNew不区分大小写 我正在尝试使用正则表达式来验证该特定属性的输入: 我试过这个:?idiscardnew |丢弃旧的,但似乎不起作用 任何帮助都将不胜感激!谢谢 更新 这是我用来执行正则表达式检查的代码:C# XML属性的可能值的正则表达式,c#,regex,C#,Regex,我有一个XML属性,它有两个可能的值:DiscardorOld和DiscardorNew不区分大小写 我正在尝试使用正则表达式来验证该特定属性的输入: 我试过这个:?idiscardnew |丢弃旧的,但似乎不起作用 任何帮助都将不胜感激!谢谢 更新 这是我用来执行正则表达式检查的代码: [ConfigurationProperty("mode", IsRequired = true)] [RegexStringValidator("(?i)(discardnew|discardold)")]
[ConfigurationProperty("mode", IsRequired = true)]
[RegexStringValidator("(?i)(discardnew|discardold)")]
public string Mode
{
get { return (string)base["mode"]; }
set { base["mode"] = value; }
}
以下是在XML中声明属性的方式:
<eventQueue mode="discardNew" />
我尝试了这一点,但它似乎正常工作。以下所有IsMatch返回true:
Regex R = new Regex("(?i)(discardnew|discardold)");
bool i1 = R.IsMatch("DiscardOld");
bool i2 = R.IsMatch("discardOld");
bool i3 = R.IsMatch("discardOLD");
bool i4 = R.IsMatch("discardneW");
bool i5 = R.IsMatch("Discardnew");
bool i6 = R.IsMatch("dISCARDnew");
问题可能在别的地方
更新:
这对我来说很有用:
[ConfigurationProperty("mode", IsRequired = true, DefaultValue = "discardnew")]
[RegexStringValidator("^(?i)(discardnew|discardold)$")]
public string Mode
{
get { return (string)base["mode"]; }
set { base["mode"] = value; }
}
我刚刚将DefaultValue=discardnew添加到ConfigurationProperty。ASP.NET总是根据正则表达式检查DefaultValue,即使您没有设置它。然后它认为它是空字符串,它不会根据正则表达式进行验证,所以它会抛出异常。还考虑Addie^和$到常规模式,否则它不仅验证DeCdBeNeX,还将验证DeCordNe1、1DISCARDION等。 < P>我尝试了这一点,并且它似乎正确地工作在以下所有匹配返回true:
Regex R = new Regex("(?i)(discardnew|discardold)");
bool i1 = R.IsMatch("DiscardOld");
bool i2 = R.IsMatch("discardOld");
bool i3 = R.IsMatch("discardOLD");
bool i4 = R.IsMatch("discardneW");
bool i5 = R.IsMatch("Discardnew");
bool i6 = R.IsMatch("dISCARDnew");
问题可能在别的地方
更新:
这对我来说很有用:
[ConfigurationProperty("mode", IsRequired = true, DefaultValue = "discardnew")]
[RegexStringValidator("^(?i)(discardnew|discardold)$")]
public string Mode
{
get { return (string)base["mode"]; }
set { base["mode"] = value; }
}
我刚刚将DefaultValue=discardnew添加到ConfigurationProperty。ASP.NET总是根据正则表达式检查DefaultValue,即使您没有设置它。然后它认为它是空字符串,它不会根据正则表达式进行验证,所以它会抛出异常。也可以考虑Addie^和$到常规模式,否则它不仅会验证DeCdBeNeX,还将验证DeBeCudie1、1DeCaseNoW等.
?我应该为您工作,但是您也可以尝试将枚举值传递给匹配方法,例如,
,我应该为您工作,但是,您也可以尝试将枚举值传递给Match方法,例如。
当您说XML属性时,您是指XML属性,例如type=discardOld,还是指XML文本,例如discardOld?表达式本身很好。向我们展示您正在使用的代码,因为问题可能在于您如何使用它。当您说“XML属性”时,您是指XML属性,例如type=DiscardorOld,还是指XML文本,例如DiscardorOld?表达式本身很好。向我们展示您正在使用的代码,因为问题可能在于您如何使用它。您似乎在这方面是正确的。。。我把问题和代码混在一起,似乎找不到我错的地方…你在这方面似乎是对的。。。我把问题和代码混在一起,似乎找不到我错的地方。。。