Я создаю форму на своем веб-сайте для пожертвований. Я хочу, чтобы пожертвование было текстовым полем со стоимостью любой суммы в размере от 5 до 500 и для другой валюты, чтобы быть между 2000 и 200000, пожалуйста, помогите.Регулярное выражение для числа больше x и меньше y
ответ
Не используйте регулярное выражение здесь
Есть слишком много способов проверить, т.е. x
находится в диапазоне. Регулярное выражение вызовет проблему с производительностью.
здесь является фактическим ответ
регулярного выражения для диапазона 5 до 500:
/^(?:[5-9]|(?:[1-9][0-9])|(?:[1-4][0-9][0-9])|(?:500))$/
редактировать^2
Я не знаю, почему регулярное выражение важно здесь. Но я объясню, как это работает.
Поскольку regex - это шаблон, соответствующий языку, мы можем сопоставлять только шаблон с ним. Итак, мы должны найти в ней какую-то модель.
Здесь узоры: 5-9 или 10-99 или 100-499 и 500.
Так что, если наше регулярное выражение /[5-9]/
будет соответствовать нашим первым. Таким образом, пришли /[1-9][0-9]/
, /[1-4][0-9][0-9]/
и /500/
.
Но, должен ли я проверять наши данные несколько раз?
Нет, у вас есть другой вариант.
Мы будем использовать трубку для проверки чередования.
/[5-9]|([1-9][0-9])|([1-4][0-9][0-9])|(500)/
Фактически это также должно работать нормально, но я делаю их не замаскированными. Итак, я положил ?:
Хмм. Технически это хороший совет, но в качестве ответа ему не хватает альтернативного решения. – jrajav
Я не думаю, что это вызовет проблемы с производительностью. Конечно, регулярное выражение может быть медленнее, но если вы не работаете с жестким циклом, то практически не будет никакой разницы. Мы выбираем обычный подход к преобразованию в число, а затем проверяем границы для ремонтопригодности. – nhahtdh
@nhahtdh, производительность не является главной проблемой, основная проблема заключается в надежности, ремонтопригодности и ясности решения. Все сильно не хватает, когда вы пытаетесь проверить числовые представления с регулярными выражениями. – jrajav
Здесь вам не нужно использовать регулярное выражение. Просто запишите значение ввода формы и сравните его с вашим диапазоном номеров. Это очень распространенная задача в JavaScript и известна как «проверка формы».
http://jsbin.com/ihoxut/2/edit
document.forms["myform"].onsubmit = function() {
var donationAmount = document.getElementById('donation').value;
if (donationAmount > 500) {
alert("Too high!");
return false;
} else if (donationAmount < 5) {
alert("Too low!");
return false;
} else {
alert("Just right!");
return false;
// You would actually want to return true for this one to submit the form, but that would break jsbin
}
};
Мне нужно regex cause Я использую расширение формы в своих cms, и это позволяет мне проверять использование regex – user2202289
Не следует использовать регулярное выражение для него.
если вы используете PHP сделать:
if (($currency == $currency1) && ($amount >= 5) && ($amount <= 500)) {
echo "Between 5 and 500 at currency 1";
} elseif (($currency == $currency2) && ($amount >= 2000) && ($amount <= 200000)) {
echo "Between 2000 and 200000 at currency 2";
} else {
echo "Not a valid amount";
}
, конечно, вы могли бы сделать то же в Java на стороне клиента или любой другой язык, который вы хотите использовать
. Эта проверка должна быть обязательно сделана на стороне клиента. – jrajav
Валидация здесь является лишь примером того, как это можно сделать. Предположим, вы хотите сделать это на cronjob (или просто для проверки данных клиента, потому что не все используют java), вы можете использовать этот. – chill0r
Мне нужно regex, потому что я использую расширение формы в своих cms, и это позволяет мне проверять использование regex, спасибо за ваш вклад. Все пользователи – user2202289
Вы можете использовать регулярное выражение для этого, но имейте в виду, не за 6 месяцев вы помните, как это работает.
^(500|[1-4][0-9][0-9]|[1-9][0-9]|[5-9])$
Ваши другие значения будут действовать аналогично: начните с верхней границы и укажите это буквально; затем работайте до нижней границы, указав ее буквально (или в этом случае через класс символов). Каждое изменение количества цифр (например, 100 => 99) потребует нового чередования.
Мне нужно regex, потому что я использую расширение формы в своих cms, и это позволяет мне проверять использование regex, спасибо за ваш вклад – user2202289
- 1. Регулярное выражение больше и меньше
- 2. Регулярное выражение больше и меньше, чем
- 3. Регулярное выражение для любого числа больше 0?
- 4. Регулярное выражение для X или нет Y
- 5. Простое регулярное выражение для (x, y) number
- 6. Регулярное выражение для проверки числа больше 100
- 7. Как написать регулярное выражение java для десятичного числа (x, x)
- 8. Регулярное выражение, терки, меньше, между
- 9. Регулярное выражение для числа
- 10. Все строки лексикографически больше X и меньше Y
- 11. Если время больше X и меньше Y, между рассветом?
- 12. Больше и меньше символов в C# Регулярное выражение
- 13. Регулярное выражение для десятичного числа
- 14. , если целое число больше x, но меньше y (Swift)
- 15. Минимизация f (x, y), где x и y - целые числа
- 16. Regex чтобы десятичные числа больше 0 и меньше, чем 100
- 17. Регулярное выражение для удаления последовательных специальных символов больше заданного числа
- 18. Регулярное выражение для наименьшего числа
- 19. Регулярное выражение для шестнадцатеричного числа?
- 20. Регулярное совпадение X ... X ... Y?
- 21. Регулярное выражение для десятизначного числа
- 22. Регулярное выражение для нахождения строк, содержащих числа больше 1000
- 23. [RegEx] Регулярное выражение для числа больше, чем 10000
- 24. Регулярное выражение для числа и косой черты
- 25. Регулярное выражение для проверки числа и точек
- 26. Регулярное выражение для обязательного и только числа
- 27. Регулярное выражение для ограничения символа и числа
- 28. Регулярное выражение для извлечения числа и строки
- 29. Регулярное выражение для десятичного числа?
- 30. IF заявление, число меньше, чем X, но больше, чем Y
Почему вы решили использовать регулярное выражение для этого? И что у вас есть до сих пор? – nhahtdh
Regex не может использоваться для этого - регулярное выражение - это язык, соответствующий шаблону. –
@ bmorris591 Он может (в зависимости от языка), но это не рекомендуется. –