Привет, я хочу сопоставить число, которое меньше или равно 100, может быть любым в пределах 0-100, но регулярное выражение не должно совпадать с числом, которое больше 100, например 120 130,150,999 и т. Д.Как совместить число, которое меньше или равно 100?
ответ
регулярное выражение для этого
perl -le 'for (qw/0 1 19 32.4 100 77 138 342.1/) { print "$_ is ", /^(?:100|\d\d?)$/ ? "valid input" : "invalid input"}'
Как об этом для регулярных выражений:
^([0-9]|[1-9][0-9]|100)$
это проверить будет 7, 82, 100 для примеров, но будет не проверки 07 или 082.
Check this out для получения дополнительной информации (и вариации, включая нулевой префиксов) на диапазон номеров проверки
Если вам нужно, чтобы обслужить чисел с плавающей точкой, вы должны read this, здесь это выражение можно использовать:
плавающей запятой: ^[-+]?([0-9]|[1-9][0-9]|100)*\.?[0-9]+$
Попробуйте
\b(0*(?:[1-9][0-9]?|100))\b
Объяснение
"
\b # Assert position at a word boundary
( # Match the regular expression below and capture its match into backreference number 1
0 # Match the character “0” literally
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?: # Match the regular expression below
# Match either the regular expression below (attempting the next alternative only if this one fails)
[1-9] # Match a single character in the range between “1” and “9”
[0-9] # Match a single character in the range between “0” and “9”
? # Between zero and one times, as many times as possible, giving back as needed (greedy)
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
100 # Match the characters “100” literally
)
)
\b # Assert position at a word boundary
"
Визит here для будущих проблем.
Использование Код утверждения если вам нужно регулярное выражение (в конечном счете):
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/
Тест:
my @nums = (-1, 0, 10, 22, 1e10, 1e-10, 99, 101, 1.001e2);
print join ',', grep
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/,
@nums
Результат:
0,10,22,1e-010,99
попытался увидеть ссылку, но все еще не понял регулярное выражение. Как вы думаете, вы можете это объяснить? (специально ---? '': '^' --- часть – taiko
Это Regex соответствует номера 0-100 DIAPASON и запретить номера типа 001:
\b(0|[1-9][0-9]?|100)\b
Мой практический совет.
Лично я бы воздержался от написания такого сложного регулярного выражения. Что, если ваш номер изменится с 100 до 200 в ближайшем будущем. Вашему регулярному выражению придется значительно изменить, и писать его может даже сложнее. Все вышеперечисленные решения НЕ являются явным объяснением, и вам придется дополнить его комментарием в коде. Это запах.
Вопросы читаемости. Код предназначен для людей, а не для машин.
Почему бы не написать некоторый код вокруг него и сохранить регулярное выражение мертвым простым для понимания.
это соответствует 0 до 100
^0*([0-9]|[1-8][0-9]|9[0-9]|100)$
- 1. Комбинированное положительное целое число меньше или равно
- 2. Double.Epsilon равенства, больше, меньше, меньше или равно, больше или равно
- 3. Побитовое меньше или равно
- 4. Меньше или равно
- 5. SAS меньше или равно знаку
- 6. Меньше или равно не работает
- 7. Двоичный поиск ближайшего значения, которое меньше или равно значению поиска
- 8. Круглое целое число с ближайшим int, которое меньше или равно ему, и кратное 64
- 9. Меньше или равно в jquery.validationEngine.js
- 10. XPath меньше или равно проценту?
- 11. Выясните, если угадали число больше, меньше или равно случайное число, или догадывался, прежде чем и т.д.
- 12. Меньше или равно указанной дате
- 13. Простые числа меньше или равно п
- 14. генерировать число, которое не равно элементу arraylist
- 15. Значение SQL JOIN меньше или равно числу
- 16. Больше, меньше или равно, больше или равно в MIPS
- 17. «Больше или равно» и «меньше или равно» CODEIGNITER
- 18. Самое большое число, которое меньше FLT_EPSILON?
- 19. Используя число, которое меньше, чем 1
- 20. 100% не равно 100%?
- 21. меньше или равно SQL Server не работает
- 22. Меньше или равно к 8004 (машинный код)
- 23. Общий процент SSRS меньше или больше 100%
- 24. МЕНЬШЕ ИЛИ РАВНО в Oracle SQL
- 25. Больше, меньше или равно на языке ассемблера?
- 26. string меньше или равно datetime django
- 27. Хотя меньше или не равно не прекратят
- 28. меньше или равно не работает в codeigniter
- 29. Как сделать меньше или равно фильтру в Django queryset?
- 30. сравнение datetime меньше или равно не работает
Как насчет '0.5' или' 1e2'? Должны ли они соответствовать? Как насчет '0000001'? –
Почему вы хотите использовать регулярное выражение для этого? У Perl уже есть отлично обслуживаемые операторы сравнения Boolean (<, <=, ==, >,> =). –
Как говорит Дейв, вы уверены, что хотите регулярного выражения? Perl будет обрабатывать переменную как строку или число взаимозаменяемо, и вы можете написать 'if ($ num> = 0 и $ num <= 100) {...}' – Borodin