我有一个正则表达式验证器控件,用于验证街道地址文本框控件。
到目前为止,我有一个RegEx,它成功地从控件中为P.O.的所有常见形式生成错误消息。框。
^(?i)(?!.*P\.? ?O\.? ?Box)[-a-z\d .,/]*$
我还想禁止' RR '和'农村路线'。
对于它的价值,这里有一些我在尝试重写此RegEx时一直使用的参考文献:
P.O。 Box RegEx: Testing for a PO Box in all of its forms
农村路线RegEx: C#: Determing if string is like this pattern; possible regex
答案 0 :(得分:0)
是否值得编写一个自定义验证器,它只检查包含一些选项的字符串,如“PO”,“P.O。”,“RR”,“乡村路线”。
正则表达式是一个非常强大的工具,但不易维护。如果您可以编写更易于理解的代码,即使需要更长时间,那么从长远来看,这几乎总是一场胜利。
最后,我不确定你在寻找什么甚至完全可能在正则表达式。您可以选择不对某些文本进行有效捕获,但由于文本的其余部分将具有有效捕获,因此验证程序可能仍会通过。
答案 1 :(得分:0)
也许我误解了这个问题,但我没有看到任何正则表达式。做这样的事情,你可以在字符串的任何部分排除多个单词。
IEnumerable<string> disallow = new String[] { "RR", "Rural Route", "Box"};
bool invalidAddress = false;
string address = "1728 Box 12".ToLower();
foreach (var item in disallow)
{
if (address.Contains(item.ToLower()))
invalidAddress = true;
}