Я пытаюсь проверить IPv4-адрес в своей форме с ненавязчивой проверкой. Все остальные проверки работоспособны, но это примечание работает.Проверка IPv4 с использованием regex
Я определил модель собственности, как это:
[RegularExpression(ipAdressRegEx, ErrorMessageResourceName = "IPInvalid", ErrorMessageResourceType = typeof(Strings))]
public virtual String IP { get; set; }
И мой RegEx:
private const string ipAdressRegEx = @"/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g";
Сгенерированный HTML выглядит так:
<input class="k-textbox" data-val="true" data-val-regex="Invalid IP"
data-val-regex-pattern="/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g"
id="IP" name="IP" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="IP" data-valmsg-replace="true"></span>
Но проверка показывает ошибку недопустимый IP-сообщение erro, например, к ip = "192.168.1.1".
Если я ставлю следующее в консоли браузера:
"192.168.1.1".match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g)
(Использование шаблона передается в проверке входных данных) он возвращает IP-адрес, который является правильным.
Я не понимаю, почему ненавязчивая проверка не работает в этом случае ...
Я попытался с различными узорами ...
Я думаю, что проблема из-за '/ G' модификатора, который JavaScript-специфический я считаю. Возможно, проверка ASP.NET MVC использует другой метод для сопоставления на стороне клиента, а не метод 'match', который вы тестируете. И на стороне сервера этот модификатор не поддерживается точно – Andrei