Я пробовал несколько вещей, не смог заставить его работать. Мне нужно исключить PO Boxes. Я думал, что мне просто пришлось обернуть его?! .. но он не работает. Есть предположения?Как сменить PO BOX - Regex
^((?i)[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\s*(\d.))*$
EDIT: Извините, это то, что я ищу.
Пример: когда ввод «P.O. BOX» или «Почтовое отделение», мне нужно, чтобы regex был ложным. Когда вход 7821 Test street, мне нужно, чтобы regex был правдой.
Я пытаюсь использовать его в проекте ASP.net MVC
/// <summary>
/// Regex for street fields
/// </summary>
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class StreetAddressAttribute : RegularExpressionAttribute, IClientValidatable
{
/// <summary>
/// Regular expression validation for street field
/// </summary>
public StreetAddressAttribute()
: base(@"^(?!(?i)[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\s*(\d.)*)$")
{
}
/// <summary>
/// Client side validation
/// </summary>
/// <param name="metadata">Modelmetadata</param>
/// <param name="context">ControllerContext</param>
/// <returns>Client-side validation rules</returns>
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationRule { ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()), ValidationType = "streetaddress" };
}
}
Спасибо за вашу помощь
Можете ли вы объяснить, в реальных условиях, что возможные значения вы хотите, чтобы соответствовать? –
Вы хотите исключить все почтовые ящики или даже коробки APO (зарубежные американские военные)? – jle
Я бы не использовал регулярное выражение (потому что это просто добавление новой проблемы). Я думаю, что более простая строка содержит любые поля «po», «p.o. box», «почтовый ящик» и т. Д. «Работает лучше. – Dai