Подтвердить что ты не робот

Regex допускает только число или пустую строку

Может кто-нибудь помочь мне создать это регулярное выражение. Мне нужно, чтобы проверить, является ли строка полностью пустой (пустой), или если она содержит только положительные целые числа. Если что-то еще не получается. Это то, что я до сих пор.

/^\s*|[0-9][0-9]*/
4b9b3361

Ответ 1

Вы ищете:

/^(\s*|\d+)$/

Если вы хотите положительное число без начальных нулей, используйте [1-9][0-9]*

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

/^\s*\d*\s*$/

Обратите внимание, что вы не хотите разрешать частичное совпадение, например 123 abc, поэтому вам нужны стартовые и конечные привязки: ^...$.
У вашего регулярного выражения есть распространенная ошибка: ^\s*|\d+$, например, не применяет целое совпадение, равно как и то же, что и (^\s*)|(\d+$), чтение, пробелы в начале или цифры в конце.

Ответ 2

У Kobi есть хороший ответ, но технически вам не нужно его захватывать (если вы не собираетесь делать что-то выходное)

/^[\s\d]+$/

Или, если вам все равно, если строка полностью пуста (т.е. "")

/^[\s\d]*$/

Чтобы прояснить, я понял, что исходный вопрос означает, что пробел в строке следует игнорировать.

Ответ 3

Вы можете попробовать -

/^\d*$/

Чтобы соответствовать пробелу -

/^[\s\d\s]*$/

Ответ 4

^\d+([\.\,][0]{2})?$

Я нашел, что это сработало для меня. Разрешить любое целое число, но только десятичное число .00

Pass

  • 999 90
  • 100
  • 100,00
  • 101,00
  • 1000,00

Сбой

  • 101,01
  • 1000,99

Попробуйте в http://regexpal.com/

Ответ 5

Чтобы совместить число или пустую строку '' i.e пользователь не ввел никакого ввода, сделайте это

(^[0-9]+$|^$)

Чтобы сопоставить число, пустую строку или символ пробела

(^[0-9]+$|^$|^\s$)

Проверьте это на regex101