Регулярное выражение, чтобы увидеть, является ли строка целым числом или дробью

#javascript #regex #arithmetic-expressions

#javascript #регулярное выражение #арифметика-выражения

Вопрос:

  1. необходимо проверить, является ли строка целым числом от 1 до 99. поэтому разрешите здесь максимум 2 символа.

или

  1. дробь с косой чертой должна обязательно состоять из 3 символов с косой чертой во 2-м символе, а числитель [1-8] всегда меньше знаменателя [2-9], поэтому минимально возможная дробь равна 1/2. таким образом, максимально возможная дробь равна 8/9. допустимые дроби включают: 2/3, 5/8, 4/9 и т.д.

    недопустимые дроби, которые не могут быть включены, равны 3/400 8/5 6/3 0/9

Каким будет регулярное выражение?

 const req = /someregex/g;
  

также как работает req.test(строка)?

Комментарии:

1. Можете ли вы объяснить, почему вам нужно, чтобы это было сделано с помощью regex, когда regex не имеет прямого способа сравнить величину двух чисел?

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

Ответ №1:

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

Таким образом, в сочетании с целым числом от 1 до 99 вы получаете следующее:

^([1-9]d?|1/[2-9]|2/[3-9]|3/[4-9]|4/[5-9]|5/[6-9]|6/[7-9]|7/[89]|8/9)$

Якоря ^ и $ гарантируют, что вся строка должна совпадать, поэтому вокруг потенциального совпадения не допускаются символы.

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

Комментарии:

1. Спасибо за ответ. и рассмотрит ваше предложение закодировать мою проверку в JS