Как разбить регулярное выражение на несколько регулярных выражений в Asp. Net MVC? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть поле, я добавил для него регулярное выражение. Таким образом, это регулярное выражение не допускает более 7 цифр до запятой и более двух цифр после запятой. это работает нормально, выдает сообщение об ошибке правильно. Теперь я хочу дать разные-2 сообщения для до и после десятичной точки. Если пользователь вводит более 7 цифр значения цифра c, то сообщение об ошибке появится под полем «Максимально допустимые 7 цифр». Если пользователь вводит более 2 цифр десятичного значения, то сообщение об ошибке будет отображаться в поле как «Максимально допустимы 2 цифры десятичного числа».

[RegularExpression("^\\d{0,7}(\\.\\d{0,2})?$", ErrorMessage = "Please enter Comment in the right format.")]
public decimal? decimalField { get; set; }

Редактировать: Может мы делаем что-то вроде строки? { ссылка }

Если это невозможно в MVC, то как это возможно, используя javascript или jquery?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

В вашем текущем шаблоне ^\\d{0,7}(\.\\d{0,2})?$ все части являются необязательными и также будут соответствовать пустой строке или одной точке , поскольку десятичная часть принимает от 0 до 2 цифр.

Если вы Если вы хотите использовать 2 шаблона для 2 разных сообщений, вы можете сопоставить шаблон, который допускает 1-7 цифр до десятичной точки и 1-2 цифры после точки.

Если вы хотите разрешить начальную точку без точки git, вместо этого можно использовать \\d{0,7}.

^\\d{1,7}(?:\\.\\d{1,2})?$

Regex demo


Для сопоставления от 1 до 7 цифр:

^\\d{1,7}$
0 голосов
/ 12 апреля 2020

Не думаю, что это возможно с помощью аннотаций данных. Одним из подходов может быть то, что вы явно проверяете свою модель и настраиваете сообщение об ошибке на основе условия регулярного выражения в вашем действии.

if (Regex.IsMatch("value", "regPattern"))
{
   ModelState.AddModelError("FieldName", "ErrorMessage");
}
...