Номер совпадения без десятичного числа и более 10 000 - PullRequest
2 голосов
/ 18 июня 2019

Я не очень знаком с регулярным выражением и пытаюсь создать код регулярного выражения в JavaScript, чтобы соответствовать строке только с

  • целые числа
  • без десятичных знаков / точек
  • и должно быть больше 10000

Пока у меня это как фф. Я думаю, что я что-то упустил, так как он все еще читает десятичные числа и == 10000. Как мне это сделать?

[1-9](?!\.)\d[0-9]{3,}

https://regex101.com/r/hG2iU7/61

Ответы [ 2 ]

7 голосов
/ 18 июня 2019

С риском не дать прямого ответа на вопрос, JavaScript уже может анализировать числа.Зачем пытаться переопределить это?Особенно с RegExp?

Почему бы не просто parseFloat(theString) или Number(theString) всей строки?

Ошибка / возврат NaN, если то, что у вас есть, не является числом, и вы можете проверить это с помощью isNaN.

Если это не так, вы можете проверить его, чтобы убедиться, что оно является целым значением:

const isIntegral = Math.trunc(theNumber) === theNumber;

и меньше 10000

const isLessThan10000 = theNumber < 10000;

Этокод будет намного легче читать и поддерживать, чем регулярное выражение.

5 голосов
/ 18 июня 2019

Вы можете использовать

^[1-9][0-9]{4,}$

Для исключения 10000 добавить (?!10000$) прогноз:

^(?!10000$)[1-9][0-9]{4,}$
 ^^^^^^^^^^

См. Демонстрационную версию регулярных выражений и график регулярных выражений :

enter image description here

Детали

  • ^ - начало строки
  • (?!10000$) - отрицательный прогноз, который отменяет совпадение, если вся строка равна 10000 (т.е. после начала строки (^), есть 10000, а затем следует конец строки) ($))
  • [1-9] - цифра от 1 до 9
  • [0-9]{4,} - любые четыре или более цифр
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...