Я использую выражение регулярного выражения для проверки доменного имени (мой вопрос здесь не в том, чтобы определить, является ли регулярное выражение хорошим или нет!).
Вот регулярное выражение, которое я использую: ^(?:[a-zA-Z0-9]+(?:-*[a-zA-Z0-9])*.)+[a-zA-Z]{2 ,6}$
Используя это регулярное выражение в моем бэкэнде C#, доменное имя org.comabcd помечается как недопустимое (поскольку в расширении доменного имени 7 символов). Так что это здорово!
Используя это регулярное выражение в онлайн-валидаторе регулярных выражений javascript (http://regexpal.com/), я обнаружил такое же поведение. Это все равно здорово!!
Но мой интерфейс пользовательского интерфейса использует это регулярное выражение в пользовательской проверке Knockout JS для пользовательского DataAnnotationsModelValidator, и доменное имя помечается как действительное.
Вот код, который я использую:
ko.validation.rules["domainname"] = {
validator: (val: any, validate: boolean) => {
var regex = new RegExp("^(?:[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9])*\.)+[a-zA-Z]{2,6}$");
return regex.test(val);
},
message: Localization.validation_domain_name_invalid_format
};
Я знаю, что валидатор работает «немного», потому что при попытке добавить цифры в расширение доменного имени он правильно помечается как недействительный.
Любая идея, что происходит, почему регулярное выражение, кажется, используется неправильно?
var regex = /^(?:[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9])*\.)+[a-zA-Z]{2,6}$/
. Боковое примечание: проверка нокаута уже имеет валидатор шаблона, вы просто передаете строку регулярного выражения, если это вам нужно - person Thewads   schedule 21.10.2013