【发布时间】:2021-11-17 23:25:48
【问题描述】:
我正在使用一种旨在阻止邮政信箱的验证方法。正如所写的,它目前阻止像“42 Boxwood Ln”这样的真实地址,因为“Box”这个短语。我该如何解决这个问题 - 可能只阻止似乎是邮政信箱的较短字符串?例如,确保字符串“Box”后面必须跟一个数字?
这是当前代码:
private static bool IsPostOfficeBox(string add1, string add2)
{
if (add1 == null) return false;
var poBoxReg = new Regex(@"(?i)\b(?:p(?:ost)?\.?\s*[o0](?:ffice)?\.?\s*b(?:[o0]x)?|b[o0]x)");
var isPOBox = poBoxReg.IsMatch(add1);
if (add2 == null || isPOBox) return isPOBox;
return poBoxReg.IsMatch(add2);
}
【问题讨论】:
-
你要我们做什么?
-
此正则表达式使用户传递的任何地址都失败,并且其中包含单词“box”。它将其视为邮政信箱号码而不是地址并给出错误。
-
所以您想要一个查找“框后跟至少一个数字”的正则表达式?
-
是的,这就是我要找的
-
当 add1 作为“42 Boxwood Ln”传入并且 add2 作为“Apt 111”传入时。我正在寻找的是“isPOBox”以“假”的形式出现,而现在它以“真”的形式出现。