Странно, что я никогда не сталкивался с этим раньше, но оказывается, что RegularExpressionValidator не использует Regex.IsMatch или JavaScript Regex.test () - он проверяет совпадение захватаэто точно соответствует полной проверенной стоимости.Вот соответствующий код JS:
var rx = new RegExp(val.validationexpression);
var matches = rx.exec(value);
return (matches != null && value == matches[0]);
Так что, если выражение - все упреждающие слова (которые соответствуют позициям, а не фактическому тексту), оно завершится ошибкой.Это более понятно с примером выражения, которое только частично соответствует, например, с \ d {5} , значение «123456» завершится ошибкой.Дело не только в том, что он добавляет «^ $» вокруг вашего выражения и выполняет IsMatch.Ваше выражение на самом деле должно захватить.
Исправление в моем случае это выражение:
(?=^.{7,60}$)(?=.*[0-9].*).*[a-zA-Z].*