我认为public class MyObject : INotifyDataErrorInfo
{
[Required]
public string Alpha { get; set; }
public string Beta { get; set; }
public bool HasErrors
{
get { return string.IsNullOrEmpty(Alpha); }
}
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
public IEnumerable GetErrors(string propertyName)
{
yield return propertyName;
}
}
排除了所有字母数字字母,但允许使用特殊字符,空格等。
使用搜索字符串[^0-9a-zA-Z]*
我希望输出
[^0-9a-zA-Z]*ELL[^0-9A-Z]*
但是我也得到以下输出
ELL
ELLs
The ELL
Which ELLs
如何解决这个问题?
答案 0 :(得分:1)
将*更改为+
a *表示任何金额,包括无。 A +表示一个或多个。你可能想要的是一个边界词:
\bELL\b
单词边界是\ w和\ W(非单词字符)之间的位置,或者如果字符串开头或结尾(分别)带有单词字符([0-9A-Za],则位于字符串的开头或结尾处-z_])。更多关于这一点: What is a word boundary in regexes?
答案 1 :(得分:1)
您可以使用
(?:\b|_)ELLs?(?=\b|_)
请参阅regex demo。
如果它被ELL
或非单词字符包围,或者在字符串的开头/结尾处,它会找到ELLs
或_
。
<强>详情:
(?:\b|_)
- 与字边界位置(\b
)或(|
)a _
ELLs?
- 匹配ELL
或ELLs
,因为s?
匹配1或0 s
个字符(?=\b|_)
- 需要在当前位置右侧显示字边界或_
的正面预测。