#javascript #regex #arithmetic-expressions
#javascript #регулярное выражение #арифметика-выражения
Вопрос:
- необходимо проверить, является ли строка целым числом от 1 до 99. поэтому разрешите здесь максимум 2 символа.
или
-
дробь с косой чертой должна обязательно состоять из 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